2017-11-04 125 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

相关问题