Android中的儿童活动

所以我有两个活动。 主要被称为 ,而孩子被称为孩子 。 在主活动中单击一个button时,将触发下面的一段代码:

Intent i = new Intent(Main.this, Child.class); Main.this.startActivity(i); 

这将打开儿童活动。

只要我打电话给完成()或按下儿童活动内的后退button,而不是回到主要的,应用程序只是closures。 你可以给我一个提示,问题可能是:(

PS通过试验和错误我发现,如果编辑AndroidManifest.xml并添加

 android:theme="@android:style/Theme.Dialog" 

Child的声明中,后退button和调用finish()的行为如预期的那样:closures子活动并将焦点置于主位置。 问题是,当我开始在EditText中input时,屏幕开始闪烁(而非bizzare)。 所以我不能用它作为对话框。 我的主要活动是使用相机,这可能会造成问题。 虽然当孩子活动开始时, onPause事件被触发,并停止相机,直到onResume被调用。

编辑:

所以我尝试使用startActivityForResult并添加

 Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show(); 

onPause和类似的onResume方法。 当Child返回onResume不会被触发。 我什至overrided onActivityResult ,甚至不会触发。 :(这么离奇…

我觉得我发现了这个问题,但我自己解决不了

Child活动被激活时,在Main活动中调用onStoponDestroy之后。 但为什么?!?

Related of "Android中的儿童活动"

你应该能够做到以下几点:

 Intent i = new Intent(this, Child.class); startActivityForResult(i); 

(你只需要Main.this,如果你是从内部类调用这个)。

当你想退出小孩活动时:

 setResult(Result.OK); finish(); 

这应该导致onActivityResult在你的Main类中被调用,然后是OnResume。

如果这不起作用,你可以尝试在各种onX方法中join断点或打印语句,看看哪些被调用。

根据http://developer.android.com/resources/faq/commontasks.html#opennewscreen当你启动新的Activity时会发生什么情况确实是不同的:
如果第一个Activity仍然以某种方式可见(正如你发现的那样,如果它被显示为对话框),它只会收到onPause() 。 如果它不再可见,它也会收到onStop()
但正如其他人所说,如果您启动第二个活动来从中获取结果, startActivityForResults似乎更符合逻辑

(我是新手,也是学习格式化的,你可以通过点击橙色问号阅读帮助文件 – 在代码示例之前使用4个空格来缩进它们,显然)

我使用对话框而不是一个活动,一切运作良好,所以我就这样离开。