【问题标题】:i want to retrieve current logged user data from firestore but this show error [duplicate]我想从firestore检索当前记录的用户数据,但这显示错误[重复]
【发布时间】:2018-08-18 00:25:06
【问题描述】:

尝试在 null 对象引用上调用虚拟方法 com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()':

MyAccount.java

public class MyAccount extends AppCompatActivity  {

    private FirebaseAuth mAuth;
    private TextView email,passwordtxt;
    private FirebaseFirestore mFirestore;
    private String UserId;
    private FirebaseAuth.AuthStateListener mAuthListener;

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

        email       = (TextView)findViewById(R.id.email_txt);
        UserId      = mAuth.getCurrentUser().getUid();
        passwordtxt = (TextView)findViewById(R.id.pass_txt);
        mAuth       = FirebaseAuth.getInstance();
        mFirestore  = FirebaseFirestore.getInstance();

        mFirestore.collection("Hospitals")
                  .document(UserId).get()
                  .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {
                String user_name = documentSnapshot.getString("email");
                String password  = documentSnapshot.getString("password");

                email.setText(user_name);
                passwordtxt.setText(password);
            }
        });
    }
}

【问题讨论】:

  • @SantanuSur 它不属于你,因为你可以复制......
  • mAuth 为空 @GowthamanM 它显然是重复的!
  • @SantanuSur 是的,我知道..但是你可以复制不是 android 相关的标签。
  • 如果没有添加适当的标签,问题应该用那个标签编辑,然后应该这样标记!! @GowthamanM

标签: java android firebase-realtime-database google-cloud-firestore


【解决方案1】:

将您的 onCreate 方法代码更改为:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_account);

    email = (TextView)findViewById(R.id.email_txt);
    mAuth = FirebaseAuth.getInstance();
    UserId = mAuth.getCurrentUser().getUid();
    passwordtxt = (TextView)findViewById(R.id.pass_txt);

    mFirestore = FirebaseFirestore.getInstance();
   mFirestore.collection("Hospitals").document(UserId).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) {
            String user_name = documentSnapshot.getString("email");
            String password  = documentSnapshot.getString("password");


            email.setText(user_name);
            passwordtxt.setText(password);
        }
    });    
}

【讨论】:

  • 兄弟,我找不到你的代码和我的代码有什么区别
  • 只需将其复制并粘贴到您的代码中,您就会发现它...如您所见 mAuth = FirebaseAuth.getInstance();使用前必须先初始化...
  • @SharmaBlog 您需要获取第一个实例 mAuth = FirebaseAuth.getInstance() 然后获取用户 ID UserId = mAuth.getCurrentUser().getUid(); 仔细检查..
  • 谢谢,兄弟,它正在工作
  • @SharmaBlog 欢迎...快乐编码.. :) 赞成票将被 appiricated..
猜你喜欢
  • 1970-01-01
  • 2023-01-17
  • 2015-06-02
  • 2020-08-27
  • 2019-04-27
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
相关资源
最近更新 更多