4

是否可以修改用于从该活动本身内部创建活动的意图。

简单描述 是否可以更新返回的意图

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(...) 中创建的修改后的意图

4

0 回答 0