Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android startActivityForResult和子活动启动另一个活动_Android_Android Activity - Fatal编程技术网

Android startActivityForResult和子活动启动另一个活动

Android 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

我有一个场景,我的主屏幕(ActivityA)开始登录屏幕(ActivityB)。此登录屏幕将有一个按钮,允许未注册用户注册帐户,触发(ActivityC)

在我的代码中,我正在进行活动a

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的结果可能未被使用。