【问题标题】:Progress dialog never shows up进度对话框永远不会出现
【发布时间】:2018-05-03 05:00:24
【问题描述】:

我试图在单击列表项时显示进度对话框,但进度对话框从未出现。

令人惊讶的是,mProgressdialog.isShowing() 是真的。如果有人遇到过类似问题,请提供一些有关问题的见解。

adapter.setOnItemClickListener(new Adapter.ListClickListener() {
                        @Override
                        public void onItemClick(int position, View v) {



                                    //Some computations done.

                                    if (ProjectsFragment.this.getActivity() != null) {

                                        UniversalProgressDialog.showSimpleProgressDialog(getActivity(),"Loading","Loading...",false);

          android.support.v4.app.FragmentManager fragmentManager = ProjectsFragment.this.getActivity().getSupportFragmentManager();
                    android.support.v4.app.FragmentTransaction ft = fragmentManager.beginTransaction();
                    ft.replace(R.id.sample_content_fragment, new AgendaFragment(), "AGENDA");
                    ft.commit();



                                    }
                                }
                            }
                        }
                        });

UniversalProgressDialog 的源代码:-

    public class UniversalProgressDialog {

        private static ProgressDialog mProgressDialog;


        public static void showSimpleProgressDialog(Context context, String title,
                                                    String msg, boolean isCancelable) {
            try {
                if (mProgressDialog == null) {
                    mProgressDialog = ProgressDialog.show(context, title, msg);
                    mProgressDialog.setCancelable(false);
                    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                    mProgressDialog.setIndeterminate(true);
                    mProgressDialog.setCanceledOnTouchOutside(false);
                }

                if(mProgressDialog.isShowing()){
                    mProgressDialog.dismiss();
                }

                if (!mProgressDialog.isShowing()) {
                    mProgressDialog.show();
                }

            } catch (IllegalArgumentException ie) {
                ie.printStackTrace();
            } catch (RuntimeException re) {
                re.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static void removeSimpleProgressDialog() {
            try {
                if (mProgressDialog != null) {
                    if (mProgressDialog.isShowing()) {
                        mProgressDialog.dismiss();
                        mProgressDialog = null;
                    }
                }
            } catch (IllegalArgumentException ie) {
                ie.printStackTrace();

            } catch (RuntimeException re) {
                re.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }


    }

我尝试了什么?

尝试将显示代码的进度对话框移至

尝试将片段转换代码移动到另一个线程,如下所示:-

 private class PerformFragmentTransition extends Thread {


        public PerformFragmentTransition() {
        }

        @Override
        public void run() {

            android.support.v4.app.FragmentManager fragmentManager = ProjectsFragment.this.getActivity().getSupportFragmentManager();
            android.support.v4.app.FragmentTransaction ft = fragmentManager.beginTransaction();
            ft.replace(R.id.sample_content_fragment, new AgendaFragment(), "AGENDA");
            ft.commit();
        }
    }

也试过了:-

getActivity().runOnUiThread(new Runnable(){
                                public void run() {
                                    UniversalProgressDialog.showSimpleProgressDialog(getActivity(),"Loading","Loading...",false);

                                }
                            });

也试过了:-

根据其中一条评论,我注释掉了片段转换代码,并显示了进度对话框。

如果这能提供一些关于如何解决问题的线索, 和更多信息:- 加载后,我将关闭下一个片段中的进度对话框。

【问题讨论】:

  • 我认为您的片段正在弹出您的进度对话框上方。
  • 我认为对话框显示,但它会快速打开屏幕。所以在线程中添加一些延迟。也许它有效。
  • 试试UniversalProgressDialog.showSimpleProgressDialog(ProjectsFragment.this.getActivity(),"Loading","Loading...",false);
  • 只是为了注释片段交易代码并尝试。
  • 所以您需要先打开片段,然后在其 onCreateView() 中显示您的进度对话框,并在检索到数据时关闭您的对话框。

标签: android fragment progressdialog


【解决方案1】:
mProgressDialog = ProgressDialog.show(context, title, msg);

将上面的代码替换为下面的代码:

 mProgressDialog = new ProgressDialog(context);
        mProgressDialog.setTitle(title);
        mProgressDialog.setMessage(msg);

问题是您在代码中创建对话框时正在显示对话框 在为其设置所需的属性之前。并且请删除 try catch 块,这样您就会得到实际发生的错误。并且可以在控制台中看到

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多