Mar*_*nov 7 java android android-manifest android-activity
所以我有两个活动.主要叫做Main,孩子叫做Child.在主活动中单击按钮时,它会触发以下代码:
Intent i = new Intent(Main.this, Child.class);
Main.this.startActivity(i);
Run Code Online (Sandbox Code Playgroud)
这打开了Child活动.
只要我调用finish()或按子活动中的后退按钮而不是返回主要活动,应用程序就会关闭.你能给我一个暗示问题可能是:(
PS通过反复试验我发现如果编辑AndroidManifest.xml并添加
android:theme="@android:style/Theme.Dialog"
Run Code Online (Sandbox Code Playgroud)
在Child的声明中,后退按钮和调用finish()按预期运行:关闭子活动并使main成为焦点.问题是,当我开始在EditText中输入时,屏幕开始闪烁(而不是古怪).所以我不能将它用作对话框.我的主要活动是使用相机,因此可能会出现问题.虽然启动子活动时,会触发onPause事件并在调用onResume之前停止摄像头.
编辑:
所以我尝试使用startActivityForResult并添加
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)
到onPause和onResume方法类似的一个.当Child返回onResume时不会被触发.我甚至凌驾于theActivityResult上,甚至没有被触发.:(太奇怪......
我想我发现了问题,但我自己无法解决
当儿童活动被激活,的onStop立即那之后的onDestroy是在内部调用的主要活动.但为什么?!?
Che*_*mon 10
您应该能够执行以下操作:
Intent i = new Intent(this, Child.class);
startActivityForResult(i);
Run Code Online (Sandbox Code Playgroud)
(如果你从内部类调用它,你只需要Main.this).
如果要退出子活动:
setResult(Result.OK);
finish();
Run Code Online (Sandbox Code Playgroud)
这应该导致在Main类中调用onActivityResult,然后是OnResume.
如果这不起作用,您可以尝试在各种onX方法中放置断点或打印语句,以查看正在调用的方法.