是否可以修改用于从该活动本身内部创建活动的意图。
简单描述 是否可以更新返回的意图
getIntent()
使用新值并让它使用这些新值,如果由于系统将其杀死以获取资源或方向更改而重新创建活动,或者在使用开发人员选项时选择了不保留活动选项(这会强制重新创建每个活动当你离开它并回到它时)。
我想要达到的目标
我正在尝试实现一种在不使用数据库或 SharedPreferences 的情况下在活动之间传递变量(并更新它们)的方法。我希望数据仅在应用程序存在时才有效,但也可以通过 androids 系统首选项轻松重新创建。这只是我的一个想法,尝试一些新的东西。我不知道我的解释会如此难以理解。对于那个很抱歉。
复杂描述
场景:
从 MainActivity 我用下面的代码创建另一个 Activity (ActivityA)
Intent tmp = new Intent(getApplicationContext(), ActivityA.class);
tmp.putExtra("Key", "Value");
startActivity(tmp);
然后在 ActivityA 中打印出该值
Log.i("TAG", getIntent().getExtras().getString("Key"));
上述行将在日志中打印出 Value
然后在 ActivityA 我将按下一个按钮以使用以下代码启动 ActivityB
Intent tmp = newIntent(getApplicationContext(), ActivityB.class);
startActvityForResult(tmp, 1000) //1000 is the result code
然后,当我按下按钮时 ActivityB 启动时,我想使用以下代码将数据发送回 ActivityA:
Intent returnIntent = new Intent();
returnIntent.putExtra("Test1", "Value2");
setResult(RESULT_OK, returnIntent);
finish();
以上所有工作都没有问题。我要做的是在 ActivityA 的 onActivityResult(...) 中修改用于创建 ActivityA 的意图,并使用此处返回的值
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
//modify intent used to create this activity with value received in data
}
因此,当我离开应用程序时在方向更改或(开发人员选项不保留活动)时重新创建活动时,getIntent() 函数将返回新数据(在 onActivityResult(...) 中更新的数据)而不是那个用于最初创建它(来自 MainActivity 的调用)。
这样的事情可能吗?我一直在胡闹
setIntent(getIntent().putExtra("Key", "value obtained Intent data"))
但是当活动在回家后重新创建时,getIntent 会带来第一个意图(最初用于创建它的意图),而不是在 onActivityResult(...) 中创建的修改后的意图