私は、実行時にいくつかのロジックによって決定された日付ごとに特定のイメージを含む暦月ビューを表示するための断片を持っています。フラグメントの読み込みに時間がかかるので、私は進捗バーを表示したい。プログレスバー自体はフラグメントビューの一部なので、asynctaskが終了する前にどのように表示すればいいですか?フラグメントビューは、asynctask内に配置されたロジックごとに作成されます。フラグメントビューロードがasynctaskの一部であるときに、フラグメントロード前に進行状況バーを表示する方法は?
わかりやすくするためのコードスニペットを表示しています。
public class CalendarMonthViewFragment extends Fragment implements OnCalculateMonthlyCompleted {
@BindView(R.id.progressBar) ProgressBar progressBar;
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
new CalculateMonthlyDataTask(this, progressBar).execute(); //asynctask that decides the view
return inflater.inflate(R.layout.calendar_monthview_fragment, container, false);
}
private class CalculateMonthlyDataTask extends AsyncTask<Void, Void, MonthlyDataResult> {
private OnCalculateMonthlyCompleted listener;
private ProgressBar progressBar;
private CalculateMonthlyDataTask(OnCalculateMonthlyCompleted listener, ProgressBar progressBar) {
this.listener = listener;
this.progressBar = progressBar;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(MonthlyDataResult monthlyDataResult) {
super.onPostExecute(monthlyDataResult);
//progressBar.setVisibility(View.GONE);
listener.onTaskCompleted(monthlyDataResult);
}
@Override
protected MonthlyDataResult doInBackground(Void... params) {
panchangMonthlyController.calculateMonthlyCalendar();
return panchangMonthlyController.getMonthlyDataResult();
}
}
}
これを行う方法を示すコードを提案できますか – truespan