【发布时间】: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 未触及的数据做任何它想做的事情。