2

内から進行状況ダイアログのフラグメントを更新する必要がありAsyncTaskます。古いProgressDialog.

これはフラグメントコードです:

    public static class CustomProgressDialogFragment extends SherlockDialogFragment {

        static CustomProgressDialogFragment newInstance(Object... params){
            CustomProgressDialogFragment df = new CustomProgressDialogFragment();
            Bundle bundle = new Bundle();

            // Populate bundle with params (not shown)

            df.setArguments(bundle);
            return df;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.setCancelable(false);
            int style = DialogFragment.STYLE_NORMAL, theme = 0;
            setStyle(style,theme);
        }

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            Bundle bundle = this.getArguments();

            ProgressDialog dialog = new ProgressDialog(getActivity());

            // Get params from bundle and customize dialog accordingly (not shown)

            dialog.setCancelable(false);
            dialog.setIndeterminate(false);
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

            return dialog;
        }
    }

これが私がそれを示す方法です:

    FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();       
    CustomProgressDialogFragment dialogFragment = CustomProgressDialogFragment.newInstance(<My params here>);
    ft.disallowAddToBackStack();
    ft.add(dialogFragment, stringSet.tag);      
    ft.commitAllowingStateLoss();

incrementProgressByここで、AsyncTask からダイアログを呼び出す必要があります。FragmentManager から基になるダイアログを取得する方法はありますか? これを行う適切な方法は何ですか?(ダイアログが再作成された場合に参照をリークしたくありません)。

前もって感謝します。

4

1 に答える 1

3

これは、 を呼び出して実現できますDialogFragment.getDialog()。を使用DialogFragmentして、通常どおり取得できますFragmentManager.findFragmentByTag

于 2012-11-06T08:35:31.990 に答える