【问题标题】:ProgressDialog in Fragment triggers host Activity's onPause methodFragment中的ProgressDialog触发宿主Activity的onPause方法
【发布时间】:2014-05-15 13:12:22
【问题描述】:

因此,我一直在对与错误相关的代码进行一些研究(在异步任务的 onPostExecute 中称为提交,有时会引发 IllegalStateException),我发现当我从片段中启动异步任务时,并且显示一个进度对话框,我的 Activity 调用他的 onPause 方法,该方法级联到我的 Fragment 中相应的 onPause。我查看了 API 和此处,但没有找到答案。为什么在我的活动中调用 onPause?活动不一定要进入后台是吗?

【问题讨论】:

    标签: android android-fragments android-asynctask android-activity onpause


    【解决方案1】:

    当您的活动进入后台时,会调用onStop() 方法。但是,当您显示对话框时,活动不在您的视图顶部,因此会调用 onPause() 方法。

    如果您想在 onPause() 方法中执行一些在您想要显示对话框时不应执行的操作,那么您需要设置一个标志,并且仅在标志为 true 时执行该代码:

    @Overrides
    public void onPause() {
        super.onPause();
        if (myFlag) {
            myMethod();
        }
    }
    

    在显示对话框和关闭对话框时切换标志。

    【讨论】:

    • 如果我想在 onResume 之前做点什么。正如我所提到的,由于我试图在我的 AsyncTask 的 onPostExecute 中提交片段事务,我得到了一个 IllegalStateException。是否有任何合理的方法可以将提交推迟到 onResume?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 2021-07-26
    • 2021-07-18
    • 2019-05-24
    相关资源
    最近更新 更多