确定应用程序是否从主屏幕启动?
在我的主要活动中,onCreate将textView设置为当前日期。从那个活动,我startActivityForResult activity2,我可以在那里更改日期。 onActivityResult,我将textView设置为返回的任何日期。确定应用程序是否从主屏幕启动?
现在,如果关闭主要活动并且textView不是当前日期。下次打开它时(从主屏幕或应用程序抽屉中的按钮),我希望它将textView设置为当前日期。
第一次打开后,下次打开它时,它不会触及onCreate。我试过使用onResume,但是这会阻止activity2 onActivityResult更改日期。
怎么是这样的:
首先,创建一个onSaveInstanceState(Bundle)
方法和日期TextView
的当前内容保存到它。这是在Android停止,隐藏或破坏您的活动之前调用的。
当您启动activity2时,您的 activity1将被调用。在那里,设置一个标志来指示onStop()
是否因为你开始一个新的活动而被调用(使activity2成为一个成员,而不是本地变量)。确保您将这个标志保存在activity1的onSaveInstanceState
中。
在activity1中实现onRestoreInstanceState(Bundle)
,并且还原到本地变量的日期和标志值。
最后,在活动1的onResume
,检查标志 - 它,你正在恢复,因为你是从活性2回,不改变TextView的,因为这将在onActivityResult
设置,否则,您可以安全地恢复保存日期值。
尝试将activity2中的日期值保存到android SharedPreferences中。
您可以通过使用这样的设置日期为喜好:
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString(MY_NAME, "Sai");
prefsEditor.putString(MY_WALLPAPER, "f664.PNG");
prefsEditor.commit();
,你可以通过使用类似的东西阅读喜好:
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
String prefName = myPrefs.getString(MY_NAME, "nothing");
String wallPaper = myPrefs.getString(MY_WALLPAPER, null);
设置的标志,如“dateWasAlreadySet “到SharedPreferences,如果日期从activty2设置,所以你知道日期已经设置。
伪代码:
If(SharedPreferences.dateWasAlreadySet){
activity1.textField.text = SharedPreferences.get("myDate");
} else {
activity1.textField.text = currentDate;
}
我希望你明白我的意思。
你的问题不清楚,请详细说明一下 – 2011-04-07 14:15:20
你能否提供一些代码片段,以便我们确切地看到你想要调用什么?另外,你对android生命周期有充分的理解吗? – 2011-04-07 14:25:38