2011-04-07 92 views
2

在我的主要活动中,onCreate将textView设置为当前日期。从那个活动,我startActivityForResult activity2,我可以在那里更改日期。 onActivityResult,我将textView设置为返回的任何日期。确定应用程序是否从主屏幕启动?

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

第一次打开后,下次打开它时,它不会触及onCreate。我试过使用onResume,但是这会阻止activity2 onActivityResult更改日期。

+0

你的问题不清楚,请详细说明一下 – 2011-04-07 14:15:20

+0

你能否提供一些代码片段,以便我们确切地看到你想要调用什么?另外,你对android生命周期有充分的理解吗? – 2011-04-07 14:25:38

回答

2

怎么是这样的:

首先,创建一个onSaveInstanceState(Bundle)方法和日期TextView的当前内容保存到它。这是在Android停止,隐藏或破坏您的活动之前调用的。

当您启动activity2时,您的 activity1将被调用。在那里,设置一个标志来指示onStop()是否因为你开始一个新的活动而被调用(使activity2成为一个成员,而不是本地变量)。确保您将这个标志保存在activity1的onSaveInstanceState中。

在activity1中实现onRestoreInstanceState(Bundle),并且还原到本地变量的日期和标志值。

最后,在活动1的onResume,检查标志 - 它,你正在恢复,因为你是从活性2回,不改变TextView的,因为这将在onActivityResult设置,否则,您可以安全地恢复保存日期值。

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); 

设置的标志,如“dateWasAlreadySet “到SharedPreferences,如果日期从activty2设置,所以你知道日期已经设置。

伪代码:

If(SharedPreferences.dateWasAlreadySet){ 
    activity1.textField.text = SharedPreferences.get("myDate"); 
} else { 
    activity1.textField.text = currentDate; 
} 

我希望你明白我的意思。

相关问题