我的 databaseReference 的 valueEventListener

在我从特定用户收集所有数据并显示它的活动中,这个 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。原因是当他们在关闭应用程序后重新登录时,我希望它将他们带到主屏幕而不是通过配置文件创建运行它们。


慕斯709654
浏览 148回答 1
1回答

吃鸡游戏

您已在问题中描述了此问题的原因。因此,解决此问题的一种方法如下-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");    }});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java