[英]Child Activity in Android
所以我有两个活动。 主要叫做Main ,孩子叫做Child 。 在主活动中单击按钮时,它会触发以下代码:
Intent i = new Intent(Main.this, Child.class);
Main.this.startActivity(i);
这打开了Child活动。
只要我调用finish()或按子活动中的后退按钮而不是返回主要活动,应用程序就会关闭。 你能给我一个暗示问题可能是:(
PS通过反复试验我发现如果编辑AndroidManifest.xml并添加
android:theme="@android:style/Theme.Dialog"
在Child的声明中,后退按钮和调用finish()按预期运行:关闭子活动并使main成为焦点。 问题是当我开始在EditText中输入时,屏幕开始闪烁(而不是古怪)。 所以我不能将它用作对话框。 我的主要活动是使用相机,因此可能会出现问题。 虽然启动子活动时,会触发onPause事件并在调用onResume之前停止摄像头。
编辑:
所以我尝试使用startActivityForResult并添加
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
到onPause和onResume方法类似的一个。 当Child返回onResume时不会被触发。 我甚至凌驾于theActivityResult上 ,甚至没有被触发。 :(太奇怪......
我想我发现了问题,但我自己无法解决
激活子活动时, onStop以及在主活动中调用onDestroy之后立即激活。 但为什么?!?
您应该能够执行以下操作:
Intent i = new Intent(this, Child.class);
startActivityForResult(i);
(如果你从内部类调用它,你只需要Main.this)。
如果要退出子活动:
setResult(Result.OK);
finish();
这应该导致在Main类中调用onActivityResult,然后是OnResume。
如果这不起作用,您可以尝试在各种onX方法中放置断点或打印语句,以查看正在调用的方法。
根据 http://developer.android.com/resources/faq/commontasks.html#opennewscreen启动新Activity时会发生什么情况确实不同:
如果第一个Activity仍以某种方式显示(如您所发现的,如果它以对话框形式显示),它将只接收onPause()
; 如果它根本不可见,它也会收到onStop()
。
但正如另一个所说,如果你要启动第二个活动来获得结果, startActivityForResults
似乎更符合逻辑
(我是新手并且也在学习格式化,您可能希望通过单击橙色问号来阅读帮助 - 在代码示例之前使用4个空格来缩进它们,显然)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.