在我的主要活动中,onCreate我将textView设置为当前日期。从那个活动,我startActivityForResult activity2,我可以在那里更改日期。 onActivityResult,我将textView设置为返回的日期。
现在,如果您关闭主活动并且textView不是当前日期。下次打开它时(从主屏幕或应用程序抽屉上的按钮),我希望将textView设置为当前日期。
第一次打开后,下次打开它时,它不会打开onCreate。我尝试过使用onResume但是这会阻止activity2 onActivityResult更改日期。
答案 0 :(得分:2)
尝试将日期值从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);
如果日期是从activty2设置的,则将“dateWasAlreadySet”之类的标记设置为SharedPreferences,这样您就知道日期已经设置。
伪代码:
If(SharedPreferences.dateWasAlreadySet){
activity1.textField.text = SharedPreferences.get("myDate");
} else {
activity1.textField.text = currentDate;
}
我希望你理解我的意思。
答案 1 :(得分:2)
这样的事情怎么样:
首先,创建一个onSaveInstanceState(Bundle)
方法并将日期TextView
的当前内容保存到该方法中。在Android停止,隐藏或销毁您的活动之前调用此方法。
当您启动activity2时,将调用您的onStop()
activity1。在那里,设置一个标志以指示是否由于您启动新活动而调用onStop()
(使activity2成为成员,而不是本地变量)。确保将此标记保存在activity1的onSaveInstanceState
中。
在activity1中实现onRestoreInstanceState(Bundle)
,并将日期和标记值恢复为局部变量。
最后,在activity {的onResume
中,检查标志 - 你要恢复,因为你从activity2返回,不要更改TextView,因为它将在onActivityResult
中设置,否则,你可以安全地恢复保存的日期值。