是否可以从该活动本身内部修改用于创建活动的意图。
简单说明 是否可以更新
返回的意图getIntent()
使用新值并让它使用这些新值,如果由于系统为资源杀死它或者方向更改而重新创建活动,或者在使用开发人员选项时不选择保持活动选项(这会强制重新创建每次离开它并返回它时的活动。)
我想要实现的目标
我试图在不使用数据库或SharedPreferences的情况下实现在活动之间传递变量(并更新它们)的方法。我希望数据只在应用程序存在时才能生效,但也可以通过机器人系统首选项轻松恢复。 这只是我的想法,尝试一些新的东西。我不知道我的解释会如此难以理解。对不起。
复杂描述
Scencario:
从MainActivity我用下面的代码
创建另一个Activity(ActivityA)Intent tmp = new Intent(getApplicationContext(), ActivityA.class);
tmp.putExtra("Key", "Value");
startActivity(tmp);
然后在ActivityA中打印出该值
Log.i("TAG", getIntent().getExtras().getString("Key"));
以上行将在日志中打印出值
然后在ActivityA中,我将按下按钮以下面的代码
启动ActivityBIntent 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(...)中创建的修改意图