gpt4 book ai didi

java - 打开卡片 View 时如何获取特定用户的数据

转载 作者:太空宇宙 更新时间:2023-11-04 09:04:30 25 4
gpt4 key购买 nike

我根据姓名或电子邮件搜索用户,然后单击该卡片 View 。我希望屏幕显示来自 firebase 的用户数据。我如何根据该信息获取该用户的 ID?我使用了 bundle ,但出现错误。

这是我的单个页面的代码。

public class UserSingleActivity extends AppCompatActivity {
private Button btnsendFriendRequest;
private TextView displayName,displayEmail,displayId;
private DatabaseReference mUserDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_single);

//.....

//Here is the error
String userId=getIntent().getExtras().getString("userId");//look for the user Id

mUserDatabase= FirebaseDatabase.getInstance().getReference().child("users").child(userId);

mUserDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String display_name=dataSnapshot.child("name").getValue().toString();
String display_email=dataSnapshot.child("email").getValue().toString();
displayName.setText(display_name);
displayEmail.setText(display_email);
}

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

}
});
}
}

这是viewHolder。

public class FriendsViewHolders extends RecyclerView.ViewHolder implements View.OnClickListener {

private DatabaseReference userDB;
public TextView name,email,userId;

public FriendsViewHolders(@NonNull View itemView) {
super(itemView);
itemView.setOnClickListener(this);

name = (TextView)itemView.findViewById(R.id.name);
email = (TextView)itemView.findViewById(R.id.email);

}
@Override
public void onClick(View v) {
Intent intent=new Intent(v.getContext(), UserSingleActivity.class);
v.getContext().startActivity(intent);

}
}

这是错误。

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference
at com.example.android.myapplication.UserSingleActivity.onCreate(UserSingleActivity.java:29)

最佳答案

您正在尝试访问先前未保存在 bundle 中的值。在开始 Activity 之前,您应该使用如下内容:

intent.putExtra("userId", name.getText().toString());

或者,您应该输入将从其他类加载的名称,而不是 name.getText().toString()。这将保存该值,您稍后应该能够访问它。

希望对你有帮助!

关于java - 打开卡片 View 时如何获取特定用户的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60385253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com