片段交易的进度对话框
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
中关闭它。
我无法显示片段事务的进度对话框,该事务完成了大量工作。我目前尝试实现这一目标的方式是:
主要 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
中关闭它。