我的活动有一个布尔变量public。
我在MainActivity中的其他类中将变量值设置为true,但是当我的应用程序进入onPause()函数时,变量的值为false,为什么?
public class MainActivity extends ActionBarActivity {
public boolean detectedState;
public boolean isDetectedState() {
return detectedState;
}
public void setDetectedState(boolean DetectedState) {
this.detectedState = DetectedState;
}
// i have one fragment in MainActivity...
public static class contentFragment extends Fragment{
// Get and set value of Variable
MainActivity activity = new MainActivity();
System.out.println(activity.isDetectedState());
//out is false
activity.setDetectedState(enable);
System.out.println(activity.isDetectedState());
//out is true
// if now i click in home Button for example, the application is with state onPause.. and my out println is false, why?
}
@Override
protected void onPause(){
super.onPause();
System.out.println(isDetectedState());
//here out is false...
}
}
答案 0 :(得分:0)
您应该理解,对于在Fragment类中实例化的活动实例,detectedState
的值设置为true
。如果在内部类中更改其值,则变量的值不会受到影响。
答案 1 :(得分:0)
你永远不应该像这样创建活动
MainActivity activity = new MainActivity();
您可以使用接口在Activity和Fragment之间传递数据。
答案 2 :(得分:0)
您可以通过将该变量设为静态来实现它,但如果您将其存储在应用程序类中会更好。检查this