单击RecyclerView项目时,我需要将用户ID从Firebase从一个片段传递到另一个片段。我尝试通过Bundle执行此操作,但收到以下错误:
java. lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.Object android.os.Bundle.get(java.lang.String)'
发送片段:
FirebaseRecyclerAdapter firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<User, FindFriendsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull FindFriendsViewHolder holder, int position, @NonNull User model) {
holder.setUserName(model.getName());
Picasso.get().load(model.getImageURL()).placeholder(R.drawable.ic_baseline_person_24).into(holder.userImage);
holder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userid = getRef(holder.getBindingAdapterPosition()).getKey().toString();
Fragment fragment= new AnotherUserFragment();
Bundle args = new Bundle();
args.putString("userid", userid);
AddUserFragment addUserFragment = new AddUserFragment();
addUserFragment.setArguments(args);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_body, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
}
接收片段:
Bundle args = getArguments();
String receiverUserId = args.get("userid").toString();
Toast.makeText(getActivity(), "your id: " + receiverUserId, Toast.LENGTH_SHORT).show();
您正在为不同的片段设置参数,而不是导航片段
String userid = getRef(holder.getBindingAdapterPosition()).getKey().toString();
//you are navigating to this fragment, so set arguments to this
Fragment fragment = new AnotherUserFragment();
Bundle args = new Bundle();
args.putString("userid", userid);
AddUserFragment addUserFragment = new AddUserFragment();
addUserFragment.setArguments(args);
//add this line to set arguments for the actual target fragment
fragment.setArguments(args);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.main_body, fragment);
transaction.addToBackStack(null);
transaction.commit();