【问题标题】:Getting intent extra and the onCreate method?获得额外的意图和 onCreate 方法?
【发布时间】:2013-03-10 20:16:24
【问题描述】:

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

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

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

【问题讨论】:

  • 你的意思是:A->B->C->A(你写的)还是 A->B->C->B(你后面暗示的)?
  • 哦,对不起,我的意思是 A->B->C->B
  • 你唯一想要的是来自“ID”的字符串
  • @user1876202 谢谢 - 我已经把答案的开头放在下面,如果你能评论并回答其中的问题,我今天晚些时候再看。

标签: android android-intent oncreate


【解决方案1】:

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

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

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

关于接收活动

onCreate()
{
    mIdFromA = getIntent().getStringExtra("ID_FROM_A");
}

【讨论】:

    【解决方案2】:

    所以如果我做对了:

    活动 A:

    • 创建intentAtoB
    • 开始活动 B

    活动 B

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

    活动 C

    • 接收intentBtoC
    • 做某事

    现在:是否进行活动 C:

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

    2. 重新开始活动 B?

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

    如果是 2,您只需在用于启动每个 Activity 的意图中沿链向下传递信息。

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

    【讨论】:

    • 接近1. return to Activity B using finish(), 更好。只需将值存储在 Activity B 的 Class Level Variables 中,在 Activity B 的 onCreate() 中。正如我在上面的答案中建议的那样。
    • @user370305 我同意这是更好的方法,我只是想找出问题作者实际上在做什么,以便从他们开始的地方帮助他们。
    【解决方案3】:

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

    extras = getIntent().getExtras();
    String a = extras.get("KEY");
    
    if (a.equlas("A_CLASS") {
        class_a_extras = getIntent();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多