我有一個片段,顯示日曆月視圖,每個日期由運行時的某些邏輯決定。由於片段加載需要一些時間,我想顯示一個進度條。由於進度條本身是片段視圖的一部分,因此如何在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