打开名片视图时如何获取特定用户的数据?
来源:爱站网时间:2021-11-17编辑:网友分享
打开名片视图时如何获取特定用户的数据?这个问题不知道别担心,爱站技术小编给大家用一篇文章解答一下,希望大家能到相应的帮助,可以做好笔记哟。
问题描述
我根据姓名或电子邮件搜索用户,然后单击该卡片视图。我希望屏幕显示Firebase中的用户数据。如何基于此获取该用户的ID?我使用了捆绑包,但出现错误。
这是我在个人页面上的代码。
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)
思路一:
您正在尝试访问以前未保存在捆绑软件中的值。在开始活动之前,您应该使用类似以下内容:
intent.putExtra("userId", name.getText().toString());
或代替name.getText()。toString(),应放置将从其他类加载的名称。这将保存该值,您以后应该可以访问它。
希望有帮助!
思路二:
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);
}
从上面的代码,当你做
String display_name=dataSnapshot.child("name").getValue().toString();
String display_email=dataSnapshot.child("email").getValue().toString();
将此发送到要显示的其他classAdapter。
以上内容就是爱站技术频道小编为大家分享的打开名片视图时如何获取特定用户的数据?看完以上分享之后,大家应该都知道要怎么操作了吧。