如何覆盖内部类中的全局变量



我想在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类成员。

最新更新