首页 > 解决方案 > Android Studio - 我无法在实时数据库 Fire base 中使用意图

问题描述

我尝试使用先前活动的意图来查看我的数据库中的信息,但是当我尝试这样做时,我收到此错误“java.lang.NullPointerException: Can't pass null for argument 'pathString' in 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) {

            }
        });
    }
}

标签: androidfirebaseandroid-intentfirebase-realtime-database

解决方案


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) {

                }
            });
        }
    }

推荐阅读