Диалог прогресса никогда не появляется - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь показать диалоговое окно прогресса при щелчке элемента списка, но диалоговое окно прогресса никогда не появляется.

Удивительно, но mProgressdialog.isShowing () имеет значение true. Пожалуйста, дайте некоторое представление о проблеме, если кто-либо сталкивался с подобными проблемами.

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);

                                }
                            });

Также пробовал: -

В соответствии с одним из комментариев, я закомментировал код перехода фрагмента, и появился диалог прогресса.

Если вообще это дает некоторую подсказку о том, как решить проблему, и больше информации: - Я закрою диалог прогресса в следующем фрагменте после его загрузки.

1 Ответ

0 голосов
/ 03 мая 2018
mProgressDialog = ProgressDialog.show(context, title, msg);

заменить код, указанный выше, на код, приведенный ниже:

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

проблема в том, что вы показываете диалог, пока он создается в вашем коде перед установкой требуемого свойства к нему. и, пожалуйста, удалите блок try catch, чтобы вы получили сообщение об ошибке. и можно увидеть в консоли

...