Android Studio - я не могу использовать намерение в базе данных в реальном времени Fire base - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь использовать намерение из предыдущего действия, чтобы увидеть информацию из моей базы данных, но когда я пытаюсь это сделать, я получаю эту ошибку "java.lang.NullPointerException: Невозможно передать нуль для аргумента 'pathString' в child ( ) "так что я не знаю, как поступить, вот мой код:

package es.ua.eps.automatismos;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Space;
import android.widget.TextView;

import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import org.w3c.dom.Text;

import java.util.concurrent.TimeUnit;

public class Saldo extends AppCompatActivity {
    private TextView mTV;
    String spLine;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_saldo);
        Intent I = getIntent();
         spLine = I.getStringExtra("SC");

    mTV = (TextView) findViewById(R.id.saldo);
}
    DatabaseReference mDBR = FirebaseDatabase.getInstance().getReference();
    DatabaseReference mRC = mDBR.child(spLine);
    @Override
    protected void onStart() {
        super.onStart();

        mRC.addValueEventListener(new ValueEventListener() {
            @Override

            public void onDataChange(DataSnapshot dataSnapshot) {
                String Money = dataSnapshot.getValue().toString();
                mTV.setText(Money);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

1 Ответ

0 голосов
/ 02 мая 2018

Вы вызываете DatabaseReference mRC = mDBR.child(spLine) вне onCreate (), поэтому spLine еще не инициализирован. Вы можете переписать код следующим образом:

public class Saldo extends AppCompatActivity {
        private TextView mTV;
        String spLine;
        DatabaseReference mDBR;
        DatabaseReference mRC;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_saldo);

            Intent I = getIntent();
            spLine = I.getStringExtra("SC");

            mDBR = FirebaseDatabase.getInstance().getReference();
            mRC = mDBR.child(spLine);

            mTV = (TextView) findViewById(R.id.saldo);
    }

        @Override
        protected void onStart() {
            super.onStart();

            mRC.addValueEventListener(new ValueEventListener() {
                @Override

                public void onDataChange(DataSnapshot dataSnapshot) {
                    String Money = dataSnapshot.getValue().toString();
                    mTV.setText(Money);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    }
...