【发布时间】:2015-06-28 07:03:20
【问题描述】:
我想在从 Fragment 执行的 AsyncTask 期间显示 ProgressDialog。 我面临的问题是在 AsyncTask 期间没有显示进度对话框,我不知道为什么。
这里是异步任务:
public class RankTask extends AsyncTask<Void, Void, ArrayList<RowRank>> {
private ProgressDialog pDialog;
private Context context;
public RankTask(Context context) {
super();
this.context = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(context);
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected ArrayList<RowRank> doInBackground(Void... params) {
IDBInteraction interaction = new DBInteraction(
Connection.getConnection());
return interaction.getRank();
}
@Override
protected void onPostExecute(ArrayList<RowRank> result) {
pDialog.dismiss();
super.onPostExecute(result);
}
}
这是执行 AsyncTask 的 Fragment:
public class RankFragment extends Fragment {
private TableLayout tableLayout;
private static float SIZE_TEXT = 20;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(
com.example.testintro.R.layout.fragment_rank, container, false);
tableLayout = (TableLayout) rootView
.findViewById(R.id.table_rank_layout);
tableLayout.setStretchAllColumns(true);
tableLayout.bringToFront();
RankTask task = new RankTask(getActivity());
try {
createTable(task.execute().get());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
return rootView;
}
这是提交Fragment的Activity的代码行:
private void changeActivity(Button button, final Fragment fragment) {
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
【问题讨论】:
-
有什么错误什么的吗?
-
没有错误,只是没有进度对话框,但是从 AsynctTask 返回的对象,它是正确的并且运行良好。
-
我猜问题是
try catch块。可能是,你应该把try catch放在doInBackground里面
标签: android android-fragments android-asynctask progressdialog