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