在我的应用程序中,它启动了一个片段,在onCreate方法中,我异步地进行Web服务调用,这需要大约2秒的时间才能返回数据。但到那时,片段已经完成加载。因此,屏幕上不会显示任何数据。
我试着把一个线程睡了2秒,但那也没办法。
答案 0 :(得分:1)
异步调用完成后,应调用片段上的方法。您可以通过将片段传递给异步调用并使用回调方法来实现此目的。
例如,假设您使用的是AsyncTask:
public class MyFragment extends Fragment {
public void onCreate(Bundle b) {
new MyAsyncTask(this).execute(params);
}
public void updateResult(Result r) {
// update the views here
}
}
public MyAsyncTask extends AsyncTask<...> {
private final MyFragment fragment;
public MyAsyncTask(MyFragment fragment) {
this.fragment = fragment;
}
...
@Override
protected void onPostExecute(Result result) {
fragment.updateResult(result);
}
}
这样,片段可以在数据准备好之前加载。然后,可以在收到数据时填充数据。
根据您的设计,您可能希望片段中默认显示加载进度动画,然后在回调中显示数据时隐藏它。