参数'pathString'为null [英] null for argument 'pathString'

查看:142
本文介绍了参数'pathString'为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在firebase中执行查询时遇到错误,我的查询代码如下所示:

I am having an error when I perform queries in firebase, my code for query looks like this:

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_perfil);

txtNome = (TextView) findViewById(R.id.txtNomePerfil);
txtCpf = (TextView) findViewById(R.id.txtCpfPerfil);
txtEmail = (TextView) findViewById(R.id.txtEmailPerfil);
txtFone = (TextView) findViewById(R.id.txtCelularPerfil);
txtPlaca = (TextView) findViewById(R.id.txtPlacaPerfil);
imgPerfil = (ImageView) findViewById(R.id.imgPerfil);
txtNomeFantasia = (TextView) findViewById(R.id.txtNomeFantasiaPerfil);
txtCnpj = (TextView) findViewById(R.id.txtCnpjPerfil);

firebaseUser = firebaseAuth.getInstance().getCurrentUser();

uId = firebaseUser.getUid();
email = firebaseUser.getEmail();
txtEmail.setText(email);

databaseReference = FirebaseDatabase.getInstance().getReference();

databaseReference.child("Usuario").child(uId).child("nome")
        .addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
              nome = dataSnapshot.getValue(String.class);
                txtNome.setText(nome);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });


  DatabaseReference mReferenceCpf = FirebaseDatabase.getInstance().getReference();
databaseReference.child("Usuario").child(uId).child("cnpjCpf")
        .addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
             cpf = dataSnapshot.getValue(String.class);
                txtCpf.setText(cpf);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });



   DatabaseReference mReferencePlaca = FirebaseDatabase.getInstance().getReference();
    mReferencePlaca.child("Funcionario").child(cpf).child("placa")
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    placa = dataSnapshot.getValue(String.class);
                    txtPlaca.setText(placa);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

但是我收到以下错误:

异常java.lang.RuntimeException:无法启动活动ComponentInfo {ucarparceiro.ucarapp.com.ucarparceiro / ucarparceiro.ucarapp.com.ucarparceiro.Activity.ActivityPrincipal.ActivityPerfil}:java。 lang.NullPointerException:无法为child()中的参数'pathString'传递null android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2376) android.app.ActivityThread.access $ 800(ActivityThread.java:147)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1281)android.os.Handler.dispatchMessage(handler.java:102)android.os.Looper .loop(Looper.java:135)android.app.ActivityThread.main(ActivityThread.java:5253)java.lang.reflect.Method.invoke(Method.java)java.lang.reflect.Method.invoke(Method.java) :372)com.android.internal.os.ZygoteInit $ MethodAndAr gsCaller.run(ZygoteInit.java:899)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

Exception java.lang.RuntimeException: Unable to start activity ComponentInfo{ucarparceiro.ucarapp.com.ucarparceiro/ucarparceiro.ucarapp.com.ucarparceiro.Activity.ActivityPrincipal.ActivityPerfil}: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child() android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2316) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2376) android.app.ActivityThread.access$800 (ActivityThread.java:147) android.app.ActivityThread$H.handleMessage (ActivityThread.java:1281) android.os.Handler.dispatchMessage (Handler.java:102) android.os.Looper.loop (Looper.java:135) android.app.ActivityThread.main (ActivityThread.java:5253) java.lang.reflect.Method.invoke (Method.java) java.lang.reflect.Method.invoke (Method.java:372) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:899) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:694)

Firebase中的数据如下:

The data in Firebase is as follows:

用户
员工

推荐答案

您最有可能收到错误,因为 cpf 在您将其用作 mReferenceplaca 中的孩子。这是因为Firebase异步下载数据并且您的代码行是同步执行的。因此,当执行此行 mReferencePlaca.child(Funcionario)。child(cpf).child(placa)时,<$ c $的值c> cpf 仍为空,因为此 cpf = dataSnapshot.getValue(String.class); 尚未发生。

You're most likely getting an error because cpf is null when you use it as a child in mReferenceplaca. This happens because Firebase downloads data asynchronously and your code lines are executed synchronously. Therefore, by the time this line mReferencePlaca.child("Funcionario").child(cpf).child("placa") is executed, the value of cpf is still null because this cpf = dataSnapshot.getValue(String.class); hasn't happened yet.

要解决此问题,请更改此项: -

To solve this, change this :-

    DatabaseReference mReferenceCpf = FirebaseDatabase.getInstance().getReference();
databaseReference.child("Usuario").child(uId).child("cnpjCpf")
        .addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
             cpf = dataSnapshot.getValue(String.class);
                txtCpf.setText(cpf);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });



   DatabaseReference mReferencePlaca = FirebaseDatabase.getInstance().getReference();
    mReferencePlaca.child("Funcionario").child(cpf).child("placa")
            .addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    placa = dataSnapshot.getValue(String.class);
                    txtPlaca.setText(placa);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

到此: -

DatabaseReference mReferenceCpf = FirebaseDatabase.getInstance().getReference();
databaseReference.child("Usuario").child(uId).child("cnpjCpf")
        .addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
             cpf = dataSnapshot.getValue(String.class);
                txtCpf.setText(cps);

       DatabaseReference mReferencePlaca = FirebaseDatabase.getInstance().getReference();
        mReferencePlaca.child("Funcionario").child(cpf).child("placa")
                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        placa = dataSnapshot.getValue(String.class);
                        txtPlaca.setText(placa);
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

这篇关于参数'pathString'为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆