Android 确定应用程序是否从主屏幕启动?
在我的主要活动中,onCreate将textView设置为当前日期。从该活动开始,我可以更改日期。在ActivityResult上,我将textView设置为返回的任何日期 现在,如果您关闭主活动并且textView不是当前日期。下次您打开它时(从主屏幕或应用程序抽屉上的按钮),我希望它将textView设置为当前日期Android 确定应用程序是否从主屏幕启动?,android,Android,在我的主要活动中,onCreate将textView设置为当前日期。从该活动开始,我可以更改日期。在ActivityResult上,我将textView设置为返回的任何日期 现在,如果您关闭主活动并且textView不是当前日期。下次您打开它时(从主屏幕或应用程序抽屉上的按钮),我希望它将textView设置为当前日期 在它第一次打开后,下次打开它时,它不会点击onCreate。我尝试过使用onResume,但这会阻止activity2 onActivityResult更改日期。尝试将activ
在它第一次打开后,下次打开它时,它不会点击onCreate。我尝试过使用onResume,但这会阻止activity2 onActivityResult更改日期。尝试将activity2的日期值保存到android SharedReferences中 您可以使用以下方法将日期设置为首选项:
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设置的,则在SharedReferences上设置一个类似“dateWasAlreadySet”的标志,这样您就知道日期已经设置好了
伪代码:
If(SharedPreferences.dateWasAlreadySet){
activity1.textField.text = SharedPreferences.get("myDate");
} else {
activity1.textField.text = currentDate;
}
我希望你明白我的意思。像这样的东西怎么样:
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();
首先,创建一个方法并将日期TextView
的当前内容保存到该方法中。这是在Android停止、隐藏或销毁您的活动之前调用的
启动activity2时,将调用activity1的onStop()
。在其中,设置一个标志,以指示是否由于启动新活动而调用了onStop()
(将activity2的意图设置为成员,而不是本地变量)。确保将此标志保存在activity1的onSaveInstanceState
中
在activity1中实现恢复InstanceState(Bundle),并将日期和标志值恢复到本地变量
最后,在activity1的
onResume
中,检查标志-如果您是因为从activity2返回而继续,请不要更改文本视图,因为这将在onActivityResult
中设置,否则,您可以安全地恢复保存的日期值。您的问题不清楚,请您提供代码片段,以便我们能够准确地看到您想要调用什么?另外,您是否完全了解android的生命周期?