所以我有两个活动。主要名称为主要,而子名称为子名称。在主活动中单击按钮时,它将触发以下代码:
Intent i = new Intent(Main.this, Child.class);
Main.this.startActivity(i);
这将打开子活动。
一旦我调用 finish()或在子活动中按下后退按钮,而不是返回到主活动,就立即关闭该应用程序。您能给我一个提示的地方可能是:(
附言通过反复试验,我发现如果编辑AndroidManifest.xml并添加
android:theme="@android:style/Theme.Dialog"
在子的声明中,单击后退按钮并调用 finish()的行为与预期的一样:关闭子活动,并使主活动成为焦点。问题是,当我开始输入 EditText 时,屏幕开始闪烁(而不是奇怪)。因此,我不能将其用作对话框。我的主要活动是使用相机,所以可能会出现问题。尽管开始子活动时,将触发 onPause 事件,并且它将停止相机,直到调用 onResume 。
编辑:
所以我尝试使用 startActivityForResult 并添加了
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
暂停上的,与onResume 方法上的相似。当Child返回on时,不会被触发。我什至覆盖了 onActivityResult ,甚至没有被触发。 :(太奇怪了...
我想我找到了问题,但我自己解决不了
激活子活动后,在主活动中调用 onStop ,并在此之后立即调用 onStop 。但为什么?!?
最佳答案
您应该能够执行以下操作:
Intent i = new Intent(this, Child.class);
startActivityForResult(i);
(如果要从内部类调用它,则仅需要Main.this)。
当您想退出子活动时:
setResult(Result.OK);
finish();
这应该导致在您的Main类中调用onActivityResult,然后在OnResume中调用。
如果这不起作用,则可以尝试在各种onX方法中放置断点或打印语句,以查看正在调用的方法。