我正在尝试访问变量" key"来自最内层循环。但是无法,我已经检查了有关在内部类中访问变量的其他帖子,并遵循了将其声明为final并使其成为全局变量但没有工作的方法。
请检查以下代码并建议我。
在下面的代码中,我可以在循环内看到用户密钥的toast消息,Howevver toast外部循环消息给出空字符串。
private DatabaseReference mDatabaseUserDetails;
public static String key = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_account);
--- some code ---
mDatabaseUserID = DatabaseUtils.getDatabase().getReference().child("Users").child(user_id);
mDatabaseUserID.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot accountSnapshot: dataSnapshot.getChildren()){
key = accountSnapshot.getKey().toString();
Toast.makeText(getApplicationContext(), key, Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(getApplicationContext(), key, Toast.LENGTH_LONG).show();
答案 0 :(得分:1)
因为循环还没有运行。循环位于值事件侦听器中。直到稍后,当DatabaseReference调用它时,它才会运行。