2017-11-04 188 views
0

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

} 
} 

回答

0

我想通了,一個辦法來解決這個使用ProgressDialog。我只是在視圖加載之前顯示progressDialog,並在視圖加載後取消progressDialog。

0

必須顯示進度條在活動課,並取消它,當片段加載

+0

你能推薦一些代碼來顯示如何完成 – truespan

相關問題