【问题标题】:How do I pass an Intent to an activity如何将 Intent 传递给活动
【发布时间】:2013-06-08 10:30:14
【问题描述】:

我想创建一个模板 Activity,它允许来自其他外部 Activity 的一些逻辑控制。

该活动完成其工作,然后使用意图向前移动到其他活动。

路径始终由根活动决定。

图形化:

A --(c)--> B --> C

A 使用 Parcelable 将“Intent to C”传递给B

B 完成其工作时,它会触发从A(即C)获得的意图。

我在使用从一项活动到另一项活动的 Extras 时遇到了问题。 在我看来,问题在于我从活动 A 在“intent to C”中传递的上下文。

我试过了

 // The intent to arrive to C    
 Intent nextIntent = new Intent(A.this, C.class);
 nextIntent.putExtras("someVariable", true);

 // The intent that goes to B and instructs it on how to reach C
 Intent immediatelyNext = new Intent(A.this, B.class);
 immediatelyNext.putExtra("destination", nextIntent);

 startActivity(immediatelyNext);

但没用。

一旦B 转换为C,最后一个响应触摸事件(其按钮指向正确的侦听器),但视频不播放且微调器不旋转。

我错过了什么吗?

【问题讨论】:

  • 您是否尝试过将“C”Activity 类的名称作为额外的传递给“B”?然后您可以使用 to Class.forName("com.package.ClassName") 来获取您的 C 并从 B 移动到其他 Activity。
  • 感谢您的评论@Losiowaty 我想要最“通用”的方法。如果我可以直接传递意图,我会更高兴(这意味着我可以放入所有额外的东西和其他东西)。
  • 那么,这种方法有什么不一般的地方?
  • 确实,您无法传递一个完整的意图,其中包含它可能在其附加内容中携带的所有附加内容。如果没有其他解决方案,我会按照你的建议做。
  • 好吧,考虑一下:如果您知道要从 A 通过 B 作为 Extras 传递给 C 的内容,则使用它们创建一个 Bundle,并将其作为另一个 Extra 从 A 传递。这样您就可以通过从 A 到 B 的两个 extras(我们称它们为 NEXT_ACTIV_CLASS 和 PAYLOAD),当 B 完成时,您启动一​​个从 NEXT_ACTIV_CLASS 获取的新 Intent 类并将 PAYLOAD 作为 Extra 传递。然后 C 可以对 B 未触及的数据做任何它想做的事情。

标签: android android-intent


【解决方案1】:

放入onClickListener的块中:

Intent object = new Intent(Current Class name.this,Class name where want to switch.class);
startActivity(object);

【讨论】:

  • 这没有回答我的问题。
【解决方案2】:

使用它作为一种魅力:

 Intent nextIntent = new Intent(getApplicationContext(), C.class);
 nextIntent.putExtra("SomeFlag", true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多