我想在on-create方法之外的内部类中重写一个全局变量。
public class MainMenuActivity extends FragmentActivity {
String user_type;
@Override
protected void onCreate(Bundle savedInstanceState) {
user_type="collion";
result();
//print user_type
}
private void result(){
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!getData(dataSnapshot)){
user_type="vendor";
inti(user_type);
result();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
}
}
但它仍然会导致user_type冲突,而不是vendor冲突。请帮我打这个
根据result()
方法中的代码,您添加了ValueEventListener
,我想这是来自Firebase。这是异步调用,所以您不可能,除非一旦调用result((方法,就会立即调用public void onDataChange(DataSnapshot dataSnapshot)
方法。
这将异步发生,因此当您在调用result((方法后尝试打印user_type
字段时,旧值将打印为新值尚未更新。
总之,
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!getData(dataSnapshot)){
user_type="vendor";
inti(user_type);
result();
}
}
由于此方法不会被同步调用,它不会立即更新该字段,因此打印语句将打印该字段中的原始数据
只需使用MainMenuActivity.user_type = "vendor" inside the inner class
,代码就知道您在引用MainMenuActivity类成员。