在一个应用程序中,我正在使用一个对象到我的MainMenu活动中名为Preferences的类。我想在几个页面中使用这个对象。在该对象中是一个包含带数字的数组的类。当我在另一个活动(电影)中使用它时,它会更改对象中的一个数字。然后我回到主菜单并进入一个新的活动(CurrentPrefs),在其中我在屏幕上显示数字数组。当我显示数字时,它们不包含电影文件中所做的更改。所以我开始尝试使用变量。
当我启动MainMenu(它是启动活动)时,它会设置对象。然后,当我输入电影并检查对象时,它仍然具有相同的名称(object.toString())。我还检查过以确保正确更改的值。
接下来我回到MainMenu并再次检查。该对象仍然具有相同的名称,并且值也像我在电影中更改了它们。
最后我输入了CurrentPrefs活动,那里出错了。该对象突然有一个不同的名称,它也不再包含我对它所做的更改。
为什么对象会发生变化,更重要的是,我如何确保它不会改变并在任何地方保持不变?
答案 0 :(得分:1)
您的对象值更改的原因有很多。也许前一个Activity
在你没有意识到的情况下被破坏并重新创建。
您应该查看Android的SharedPreference
课程。这是一种存储,编辑和检索首选项的方法,可以在任何Activity
中访问它们:
http://developer.android.com/reference/android/content/SharedPreferences.html
答案 1 :(得分:1)
如果你很了解活动的生命周期,你也可以理解它为什么会发生。您的某些操作可能会委派给onResume()
方法,只要活动从onPause()
或onCreate()
之后立即调用,而其他操作驻留在onCreate()
仅在活动时调用开始或之后onDestroy()
。我建议您控制它并尝试移动setText()
中的所有onResume()
,以便再次读取每个更新对象的变量。