onResume()没有触发TabHost项目切换

Eug*_*ene 5 android android-tabhost

我有一个TabHost有两个tabs.我第一次切换到第二tabonResume()我的第二个的方法tab's activity调用.然后我有一个AlertDialog显示,并在它消失之后'onResume()'方法没有被调用,但我真的等待它.我假设调用'AlertDialog'触发'onPause()'方法并且'onResume()'应该在实际显示'Activity'并准备好与用户交互之前调用.但是当我切换回第一个tab是另一个时,没有调用'onPause()' activity.

您能否建议为什么不调用'onPause()'和'onResume()'方法以及在显示'AlertDialog'或切换之间调用哪些方法tabs

Mar*_*elo 7

当您创建TabHost以保存活动时,其中的子项无法管理自己的生命周期方法(onResume,onPause,onCreated等),并且父(持有者)必须执行所有管理.我通过覆盖持有者(定义tabhost的Activity)中的onPause和onResume实现了这种行为,如下所示:

@Override
public void onPause() {
    super.onPause();
    try {
        mlam.dispatchPause(isFinishing());
    } catch (Exception e) {}
}

@Override
public void onResume() {
    super.onResume();
    try {
        mlam.dispatchResume();
    } catch (Exception e) {}
}
Run Code Online (Sandbox Code Playgroud)

其中" mlam "是LocalActivityManager实例.有了它,我认为你的onResume/onPause方法将被触发.希望这能以某种方式帮助你.


AjO*_*ire 1

我认为调用“AlertDialog”会触发“onPause()”方法,并且应在“Activity”实际显示并准备好与用户交互之前调用“onResume()”

AlertDialog 不会影响 Activity 的生命周期。

在此处查看活动的生命周期流程图。

在 Tab 之间切换时,如果需要回调方法为什么不使用TabChanged Listener