繁体   English   中英

Android中的儿童活动

[英]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();

onPauseonResume方法类似的一个。 当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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM