所以我有活动A,B和C.
A启动B,并传递它不能通过Intent的附加功能无法运行的关键数据。 B启动C,然后C完成并通过NavUtils.navigateUpFromSameTask(this)向上导航。这会导致B以空意图重新启动而没有保存状态,这会导致我的应用程序崩溃。
当我导航到B时,仍然需要B中所需数据的最佳方法是什么?
答案 0 :(得分:1)
这就是为
创建的startActivityForResult不是启动活动C,而是使用startActivityForResult
当你完成C时,你写了
Intent returnData = new Intent();
returnData.putSomeExtras...
setResult(Activity.RESULT_OK,returnData);
finish();
这会导致调用B的活动onActivityResult,而你的额外内容是在传递给此方法的Intent中
onActivity结果通常如下所示
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK){
if(requestCode == REASON_I_STARTED_ACTIVITY_C){
//do something with data
}
}
}
并开始活动,你可以做这样的事情
public static final int REASON_I_STARTED_ACTIVITY_C = 100;
Intent startCIntent = new Intent(B.this,C.class);
startActivityForResult(startCIntent,REASON_I_STARTED_ACTIVITY_C);
*重要提示* onActivityResult被称为BEFORE onResume执行它的活动(在这种情况下是B)
答案 1 :(得分:-1)
另一种方法是使用SharedPreferences,它将无条件地帮助您并存储您希望存储的所需信息。
http://www.tutorialspoint.com/android/android_shared_preferences.htm