Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 确定应用程序是否从主屏幕启动?_Android - Fatal编程技术网

Android 确定应用程序是否从主屏幕启动?

Android 确定应用程序是否从主屏幕启动?,android,Android,在我的主要活动中,onCreate将textView设置为当前日期。从该活动开始,我可以更改日期。在ActivityResult上,我将textView设置为返回的任何日期 现在,如果您关闭主活动并且textView不是当前日期。下次您打开它时(从主屏幕或应用程序抽屉上的按钮),我希望它将textView设置为当前日期 在它第一次打开后,下次打开它时,它不会点击onCreate。我尝试过使用onResume,但这会阻止activity2 onActivityResult更改日期。尝试将activ

在我的主要活动中,onCreate将textView设置为当前日期。从该活动开始,我可以更改日期。在ActivityResult上,我将textView设置为返回的任何日期

现在,如果您关闭主活动并且textView不是当前日期。下次您打开它时(从主屏幕或应用程序抽屉上的按钮),我希望它将textView设置为当前日期


在它第一次打开后,下次打开它时,它不会点击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的生命周期?