gpt4 book ai didi

java - 为什么这个方法在另一个方法完成之前运行?

转载 作者:行者123 更新时间:2023-12-02 02:11:42 24 4
gpt4 key购买 nike

我对 Android 编程有点陌生。我正在构建一个简单的应用程序,并且我有一个“关注-取消关注”的概念。我只是想要的是,如果当前用户关注他/她正在探索的用户,我希望他/她看到“取消关注”按钮。如果不关注,应该有一个“关注”按钮。在我的 UserProfileActivity 类上,我有一个名为 onPrepareOptionsMenu() 的方法,在该方法中我可以设置按钮。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem follow = menu.findItem(R.id.action_follow);
MenuItem unfollow = menu.findItem(R.id.action_unfollow);
Bundle bundle = this.getIntent().getExtras();
if(isFollowing(bundle.getString("userid")) == true){
follow.setVisible(false);
unfollow.setVisible(true);
}
else{
follow.setVisible(true);
unfollow.setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}

此外,我还有另一个名为 isFollowing() 的方法,如果当前用户关注其他用户,它会返回 boolean 值“true”,如果没有,它会返回“false”。这是我想到的解决这个问题的最简单的方法。

    public boolean isFollowing(String userID){
isFollowingResult = false;

firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference();
final DatabaseReference followingData = databaseReference.child("followingData");

followingData.child(currentUser.getUid()).child(userID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists())
isFollowingResult = true;
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
return isFollowingResult;
}

当我运行此命令时,当我单击用户的个人资料时,会调用 onPrepareOptionsMenu() 方法,并在其中调用 isFollowing() 方法。问题是,它不会等待 isFollowing() 方法运行并完成运行,它会立即将其视为“false”并始终显示“follow”按钮。任何建议将不胜感激。

谢谢。

最佳答案

使类的字段关注取消关注。然后在 onDataChange(DataSnapshot) 方法中更改它们的可见性。

关于java - 为什么这个方法在另一个方法完成之前运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49908971/

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