Android startActivityForResult和子活动启动另一个活动
我有一个场景,我的主屏幕(ActivityA)开始登录屏幕(ActivityB)。此登录屏幕将有一个按钮,允许未注册用户注册帐户,触发(ActivityC) 在我的代码中,我正在进行活动aAndroid startActivityForResult和子活动启动另一个活动,android,android-activity,Android,Android Activity,我有一个场景,我的主屏幕(ActivityA)开始登录屏幕(ActivityB)。此登录屏幕将有一个按钮,允许未注册用户注册帐户,触发(ActivityC) 在我的代码中,我正在进行活动a public class ActivityA extends Activity { ... startActivityForResult(new Intent(this, ActivityB.class), 0); ... } 和活动B public class ActivityB extend
public class ActivityA extends Activity {
...
startActivityForResult(new Intent(this, ActivityB.class), 0);
...
}
和活动B
public class ActivityB extends Activity {
...
startActivity(new Intent(this, ActivityC.class));
...
}
好吧,这似乎有效,但我担心是否有任何隐藏的问题,可能会回来困扰我以后?在ActivityB中,如果启动ActivityC,则不会调用setResult()来触发ActivityA的ActivityResult()。这样的流是否存在任何问题,或者我是否应该使用startActivity而不是startActivityForResult?ActivityB在完成后将触发ActivityA的
onActivityResult
方法。当对ActivityB调用finish()
时(最好是在调用setResult()之后),ActivityB在其生命周期中做什么或产生多少新活动都无关紧要
它会传播回ActivityA。沟通中唯一的差距是ActivityC不能在活动结束时告诉ActivityB任何事情。如果你不需要,你很好;A和B的沟通仍然没有改变。谢谢你的回答。关于你的回答,有一些问题1)如果ActivityB甚至不打电话给finish()? 2) 如果ActivityC转到startActivty()并启动ActivityA,是否会出现任何问题?ActivityB在返回ActivityA之前将始终调用finish()。如果ActivityC启动ActivityA,这取决于您如何启动它。它应该创建一个新的实例,使堆栈看起来像“abca”,在这种情况下,从B到a的结果通道仍然可以。可以启动带有标志的A,将其带到堆栈的顶部,从而产生“B C A”,在这种情况下,来自B的结果可能未被使用。