为了账号安全,请及时绑定邮箱和手机立即绑定

我的 databaseReference 的 valueEventListener

我的 databaseReference 的 valueEventListener

慕斯709654 2021-06-25 06:19:49
在我从特定用户收集所有数据并显示它的活动中,这个 onDataChange 方法会正确触发并完美地显示数据。final User user = new User();     databaseReference.addValueEventListener(new ValueEventListener()     {         @Override         public void onDataChange(@NonNull DataSnapshot dataSnapshot)         {             user.setFirstName(dataSnapshot.getValue(User.class).getFirstName());             view_profile_firstName.setText(user.getFirstName().toString());             user.setLastName(dataSnapshot.getValue(User.class).getLastName());             view_profile_lastName.setText(user.getLastName().toString());             user.setEmail(dataSnapshot.getValue(User.class).getEmail());             view_profile_email.setText(user.getEmail().toString());             user.setAge(dataSnapshot.getValue(User.class).getAge());             view_profile_age.setText(Integer.toString(user.getAge()));             user.setGender(dataSnapshot.getValue(User.class).getGender());             view_profile_gender.setText(user.getGender());             user.setProfileComplete(dataSnapshot.getValue(User.class).getProfileComplete());             view_profile_profileComplete.setText(String.valueOf(user.getProfileComplete()));         }         @Override         public void onCancelled(@NonNull DatabaseError databaseError)         {         }     });虽然现在我正在尝试检查当前用户登录时 profileComplete 是否为真。我希望这样做的方式是,一旦用户注册了一个帐户,他的数据就会存储为空字符串,并且 profileComplete 设置为 false。填写完所有数据并保存他的个人资料后,将 profileComplete 设置为 true。原因是当他们在关闭应用程序后重新登录时,我希望它将他们带到主屏幕而不是通过配置文件创建运行它们。
查看完整描述

1 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您已在问题中描述了此问题的原因。因此,解决此问题的一种方法如下-


databaseReference = firebaseDatabase.getReference("Users/" + firebaseAuth.getInstance().getCurrentUser().getUid());

databaseReference.addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


        user.setProfileComplete(dataSnapshot.getValue(User.class).getProfileComplete());


        //The profileComplete method returns TRUE, so we can skip the profile creation.

        if(user.getProfileComplete()) {

            Intent intent = new Intent(MainActivity.this, ViewProfileActivity.class);

            startActivity(intent);

        }


        //the profileComplete method returns FALSE, we must send the user to the profile creation.

        else {

            Intent intent = new Intent(MainActivity.this, ProfileActivity.class);

            startActivity(intent);

        }

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {

        Log.d("MainActivity", "COULD NOT RECIEVE PROFILECOMPLETE FROM DATABASE");

    }

});


查看完整回答
反对 回复 2021-06-30
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信