片段交易的进度对话框

Progress Dialog for Fragment Transaction

我无法显示片段事务的进度对话框,该事务完成了大量工作。我目前尝试实现这一目标的方式是:

主要 Activity onCreate:

protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 Fragment myFragment = new MyFragment();
 fragmentTransaction.add(R.id.container,myFragment).commit();
}

在我的片段中 class:

public class MyFragment extends Fragment {

public MyFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_list, container, false);
    return rootView;
}

@Override
public void onStart() {
   super.onStart();
   ProgressDialog mProgressDialog = ProgressDialog.show(getActivity(), "title", "msg");
   mProgressDialog.setCancelable(true);
   mProgressDialog.show();

   // Time taking code 

   mProgressDialog.dismiss();
}

这只是显示黑屏,直到任务完成。

计时工作应该在后台线程上完成。你可以这样做:

@Override  
public void onStart() {
        super.onStart();
        final ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "title", "msg");
        progressDialog.setCancelable(true);
        progressDialog.show();

        final Handler handler = new Handler();
        new Thread(){

            @Override
            public void run() {

                // TODO: your time taking code runs here.

                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        // close the progress dialog.
                        progressDialog.dismiss();                           
                    }
                });
            }

        }.start();    
    }

您可以使用 AsyncTask 来完成耗时的工作并在 onPreExecute 中显示对话框,在 onPostExcute 中关闭它。