【问题标题】:java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()..?java.lang.NullPointerException:不能在 child() 中为参数“pathString”传递 null ..?
【发布时间】:2021-02-17 00:03:23
【问题描述】:

请帮帮我,我遇到了一个问题,找不到解决办法

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.barber, PID: 20568
java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
    at com.google.firebase.database.DatabaseReference.child(DatabaseReference.java:96)
    at com.google.firebase.database.DataSnapshot.child(DataSnapshot.java:65)
    at com.example.barber.Adepter.UserAdpter$1.onDataChange(UserAdpter.java:66)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
    at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:237)
    at android.app.ActivityThread.main(ActivityThread.java:7948)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)

UserAdapter.java

public class UserAdpter extends RecyclerView.Adapter<UserAdpter.MYholder> {
 Context mcontext;
FirebaseUser  fb;
public UserAdpter(Context mcontext, List<User> users, boolean isFargement) {
    this.mcontext = mcontext;
    this.users = users;
    IsFargement = isFargement;
}

List<User> users;
boolean IsFargement;


@NonNull
@Override
public MYholder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(mcontext).inflate(R.layout.user_sarcche, parent,false);
   return new UserAdpter.MYholder(view);
}

@Override
public void onBindViewHolder(@NonNull MYholder holder, int position) {
      fb = FirebaseAuth.getInstance().getCurrentUser();
    User user = users.get(position);

    Picasso.get().load(user.getUrl()).into(holder.circleImageView);
    holder.btn_following.setVisibility(View.VISIBLE);
    holder.usernames.setText(user.getName());

    IsFollowers(user.getUid(), holder.btn_following);
}

private void IsFollowers(String uid, Button btn_following) {
    DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Follow").child(fb.getUid()).child("Following");
     reference.addValueEventListener(new ValueEventListener() {
         @Override
         public void onDataChange(@NonNull DataSnapshot snapshot) {
             if( snapshot.child(uid).exists()){

                 btn_following.setText("following");

             }
         }

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

         }
     });

}

@Override
public int getItemCount() {
    return users.size();
}

class MYholder extends RecyclerView.ViewHolder{
    public CircleImageView circleImageView;
    public TextView usernames;
    public Button btn_following;

    public MYholder(@NonNull View itemView) {
        super(itemView);
        circleImageView = itemView.findViewById(R.id.profile_us);
        usernames =itemView.findViewById(R.id.user_name);
        btn_following = itemView.findViewById(R.id.btn_follow);
    }
}


}

模型用户.java

public class User {
private String name;
private String location;
private String online;
private String phonenumber;
private String url;
private String uid;


public User(String name, String location, String phonenumber, String url, String uid) {
      this.name = name;
    this.location = location;
   this.phonenumber = phonenumber;
    this.url = url;
   this.uid = uid;
    this.online = online;
}

public String getOnline() {
    return online;
}

public void setOnline(String online) {
    this.online = online;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}

public String getPhonenumber() {
    return phonenumber;
}

public void setPhonenumber(String phonenumber) {
    this.phonenumber = phonenumber;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

public String getUid() {
    return uid;
}

public void setUid(String uid) {
    this.uid = uid;
}

public User() {
}

}

我已经列出了所有细节,请回答这个问题 请帮助,我搜索并无法解决问题。我从这个问题中了解到 child(uid) 中的组件为空

我不明白这个问题的解决方案是什么,请帮忙

【问题讨论】:

    标签: java android


    【解决方案1】:

    IsFollowers 中,对fb.getUid() 的调用由于某种原因返回null。 一个快速的解决方法是在onBindViewHolder 中使用null 检查来包围调用行:

    if (null != fb.getUid()) {
        IsFollowers(user.getUid(), holder.btn_following);
    }
    

    但是,我会检查代码的其他部分,为什么 id 可以存储为 null。通常这不是 id 的期望值。

    不相关:您使用User,但提供的类是Alluser。此外,您应该坚持使用一致的方法命名(即 isFollowers 与小写 i)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2017-01-25
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多