变量包含Activity和Fragments

时间:2015-05-27 03:21:24

标签: android android-fragments android-activity

我的活动有一个布尔变量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...
}

}

3 个答案:

答案 0 :(得分:0)

您应该理解,对于在Fragment类中实例化的活动实例,detectedState的值设置为true。如果在内部类中更改其值,则变量的值不会受到影响。

答案 1 :(得分:0)

你永远不应该像这样创建活动 MainActivity activity = new MainActivity();

您可以使用接口在Activity和Fragment之间传递数据。

答案 2 :(得分:0)

您可以通过将该变量设为静态来实现它,但如果您将其存储在应用程序类中会更好。检查this