我的应用程序出现了令人困惑的错误有时它可以正常工作,有时则不然

时间:2015-01-22 15:55:02

标签: android android-activity


此应用有2个活动:MainActivity和SettingActivity(使用意图发送值)。 ...... MainActivity:

String set="1";
public void onCreate(Bundle instant) {
super.onCreate(instant);
setContentView(R.layout.camera);    

...当我的应用程序运行时,我通过SettingActivity更改set:set="2"的值,并且它在MainActivity中正常工作。 然后,我按下主页按钮,再次启动此应用程序,它与布局camera.xml中的set="1"一起使用; 当我按下后退按钮时:在屏幕稍微更改后,它与set="2"一起使用布局camera.xml。

为什么在按Home键后再次运行时有2个布局。为什么我必须按“返回”按钮才能获得当时set的确切值。 我试图覆盖onSaveInstanceState(Bundle instant)。但它仍然是一样的。

2 个答案:

答案 0 :(得分:0)

您是否先尝试查看此答案? Saving Android Activity state using Save Instance State

当您按下主页按钮并返回应用程序时,它可以重新启动,因此set变量将恢复为原始值。 要保存变量状态,您必须编写

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  // Save UI state changes to the savedInstanceState.
  // This bundle will be passed to onCreate if the process is
  // killed and restarted.
  savedInstanceState.putString("set", set);
}

然后你可以恢复这样的值:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // Restore UI state from the savedInstanceState.
  // This bundle has also been passed to onCreate.
  String myString = savedInstanceState.getString("set");
}

此外,为什么使用String来包含整数值?

希望这个帮助

答案 1 :(得分:0)

String set="1"; // intial global value for everyone

"当我的应用程序运行时,我更改了set:set =" 2"的值通过SettingActivity" 到那个时候MainActivity暂停了,你回来了,现在它恢复了,你按下homebutton,然后它暂停并停止,你再一次调用它,猜测是os创建了它的另一个活动,并开始整个过程中,你按下后退按钮就可以杀死新创建的类,然后弹出旧的弹出,得到它? 你总是可以玩singletasksingleTop,但为什么它给出了两个布局,这取决于你如何调用你的课程或你的活动...可能会有不同的意图..