8

我有 A、B 和 C 类。A 类向 B 发送意图,B 运行 C,C 返回到 B .....但是在 B 类的 onCreate 内部,它想要 A 类的意图。但是因为它来自 C 类它没有得到它,但我仍然需要 A 类的意图

关于如何解决这个问题的任何想法?我想一种解决方案可能是将 extra.getString 存储在数据库或类似数据库中?

Bundle extras = getIntent().getExtras();
 newString = extras.getString("ID"); 
4

3 回答 3

7

由于我不完全了解您的活动流程,因此这是一种解决方案,但可能不是合适的解决方案。

当你开始新的活动时,多放一个

intent.putExtra("ID_FROM_A", value); // except for ActivityA value = mIdFromA
startActivity(intent);

关于接收活动

onCreate()
{
    mIdFromA = getIntent().getStringExtra("ID_FROM_A");
}
于 2013-03-10T20:48:41.203 回答
2

所以,如果我做对了:

活动一:

  • 创建 intentAtoB
  • 开始活动 B

活动 B

  • 接收intentAtoB
  • 创建intentBtoC
  • 开始活动 C

活动 C

  • 接收intentBtoC
  • 做某事

现在: 活动 C:

  1. 使用finish()返回活动B,或者

  2. 重新开始活动 B?

如果为 1,当您返回 Activity B 时,它仍然会保留您在首次创建时设置的所有内容。因此,您需要从 B 的 onCreate 中的意图中提取所有内容。

如果是 2,您只需将信息传递到用于启动每个活动的意图中。

如果您可以 (a) 确认 if 的顺序和 (b) 阐明上述内容为何行不通的原因,我相信我们可以继续前进。

于 2013-03-11T09:15:34.733 回答
0

您可以通过额外的证明“它是 A 类”从 A 类获取意图,然后将其设置为本地意图;

extras = getIntent().getExtras();
String a = extras.get("KEY");

if (a.equlas("A_CLASS") {
    class_a_extras = getIntent();
}
于 2020-02-04T18:53:48.563 回答