【问题标题】:java.lang.NullPointerException: Can't pass null for argument 'pathString' in child() .... APP IS CRASHINGjava.lang.NullPointerException:无法在 child() 中为参数“pathString”传递 null .... APP 正在崩溃
【发布时间】:2020-08-18 21:36:04
【问题描述】:

我的应用程序崩溃了...

我无法理解为什么 iS 会出现此错误,以及如何删除此错误以使应用程序开始工作。

在 logcat 中它指出: java.lang.NullPointerException:不能在 child() 中为参数“pathString”传递 null

2020-08-19 02:44:21.603 25163-25282/com。 E/Parcel:此处不支持读取 NULL 字符串。

我的活动:

      public class MainActivity extends AppCompatActivity {

private NavigationView navigationView;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
private RecyclerView postList;
private Toolbar mToolbar;

private CircleImageView NavProfileImage;
private TextView NavProfileUserName;

private FirebaseAuth mAuth;
private DatabaseReference UsersRef;

String CurrentUserID;

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

    mAuth = FirebaseAuth.getInstance();
    CurrentUserID = mAuth.getCurrentUser().getUid();
    UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");

    mToolbar = (Toolbar) findViewById(R.id.main_page_toolbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setTitle("Home");

    drawerLayout = (DrawerLayout) findViewById(R.id.drawable_layout);
    actionBarDrawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.drawer_open, R.string.drawer_closed);
    drawerLayout.addDrawerListener(actionBarDrawerToggle);
    actionBarDrawerToggle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    navigationView = (NavigationView) findViewById(R.id.navigation_view);

    View navView = navigationView.inflateHeaderView(R.layout.navigation_header);
    NavProfileImage = (CircleImageView) navView.findViewById(R.id.nav_profile_image);
    NavProfileUserName = (TextView) navView.findViewById(R.id.nav_user_full_name);

    UsersRef.child(CurrentUserID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            if (snapshot.exists()) {

                if (snapshot.hasChild("fullname")) {
                    String fullname = snapshot.child("fullname").getValue().toString();
                    NavProfileUserName.setText(fullname);
                }

                if (snapshot.hasChild("profileimage")) {
                    String image = snapshot.child("profileimage").getValue().toString();
                    Picasso.get().load(image).placeholder(R.drawable.ic_profile_pic_grey).into(NavProfileImage);
                }

                else {
                    Toast.makeText(MainActivity.this, "Profile name does not exist...", Toast.LENGTH_SHORT).show();
                }
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });

    navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            UserMenuSelector(item);

            return false;
        }
    });
}

我的日志:

     2020-08-19 02:44:21.603 25163-25282/com.app E/Parcel: Reading a NULL string not supported here.

2020-08-19 02:44:21.666 25163-25280/com.app V/FA: onActivityCreated 2020-08-19 02:44:21.828 25163-25336/com.appi V/FA: 连接到远程服务 2020-08-19 02:44:21.887 25163-25336/com.app V/FA: 连接尝试已在进行中 2020-08-19 02:44:21.949 25163-25336/? V/FA:连接尝试已在进行中 2020-08-19 02:44:21.953 25163-25163/? W/ActionBarDrawerToggle:DrawerToggle 可能不会显示,因为 NavigationIcon 不可见。您可能需要调用 actionbar.setDisplayHomeAsUpEnabled(true); 2020-08-19 02:44:21.969 25163-25163/? D/OpenGLRenderer:Skia GL Pipeline 2020-08-19 02:44:21.969 25163-25163/? D/MMListParser: onlineVersion -1 defaultVersion 20191101 2020-08-19 02:44:21.970 25163-25163/? D/mmscene:打开服务器配置失败 /data/oppo/multimedia/oppo_display_perf_list.xml 2020-08-19 02:44:21.971 25163-25163/? D/mmscene: getHint applicationScene=com.appinion,idx=0 none 2020-08-19 02:44:21.981 25163-25163/? D/AndroidRuntime:关闭虚拟机 2020-08-19 02:44:21.985 25163-25163/? E/AndroidRuntime: 致命异常: main 进程:com.app,PID:25163 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.app/com.app.MainActivity}:java.lang.NullPointerException:无法在 child() 中为参数“pathString”传递 null 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3146) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3296) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:114) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:74) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:226) 在 android.app.ActivityThread.main(ActivityThread.java:7224) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:913) 引起:java.lang.NullPointerException:不能在 child() 中为参数 'pathString' 传递 null 在 com.google.firebase.database.DatabaseReference.child(DatabaseReference.java:96) 在 com.appinion.MainActivity.onCreate(MainActivity.java:72) 在 android.app.Activity.performCreate(Activity.java:7337) 在 android.app.Activity.performCreate(Activity.java:7328) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3126) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3296) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:114) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:74) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1994) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:226) 在 android.app.ActivityThread.main(ActivityThread.java:7224) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:913) 2020-08-19 02:44:21.999 25163-25163/? I/Process:发送信号。 PID:25163 SIG:9

告诉我哪里出错了... 请帮帮我.....

谢谢...

【问题讨论】:

标签: java android firebase


【解决方案1】:

错误消息告诉您在对child() 的调用中传递了null。您的代码中只有一处可能存在空值:

UsersRef.child(CurrentUserID).addValueEventListener(new ValueEventListener() {

这意味着CurrentUserID 在您在这里使用它时为空。这意味着mAuth.getCurrentUser().getUid() 在您调用它时为空。这意味着用户当时没有登录。在像这样使用它之前,您应该检查 null。

【讨论】:

  • 实际上该错误是由于当前用户 id id 为空...所以我需要一种方法来检查它是否为空...。请帮助我
  • 所以错误在某处:mAuth = FirebaseAuth.getInstance(); CurrentUserID = mAuth.getCurrentUser().getUid(); UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多