导航到依赖于意图额外数据的活动

时间:2014-12-28 20:37:28

标签: android

所以我有活动A,B和C.

A启动B,并传递它不能通过Intent的附加功能无法运行的关键数据。 B启动C,然后C完成并通过NavUtils.navigateUpFromSameTask(this)向上导航。这会导致B以空意图重新启动而没有保存状态,这会导致我的应用程序崩溃。

当我导航到B时,仍然需要B中所需数据的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

这就是为

创建的startActivityForResult

不是启动活动C,而是使用startActivityForResult

启动C.

当你完成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