[英]fragment loads before data returns
在我的应用程序中,它启动一个片段,在onCreate方法中,我异步进行Web服务调用,这大约需要2秒钟才能返回数据。 但是到那时,该片段已经完成加载。 结果,没有数据显示在屏幕上。
我试图让线程休眠2秒钟,但是那也不起作用。
异步调用完成后,应在片段上调用一个方法。 您可以通过将片段传递给异步调用并使用回调方法来实现此目的。
例如,假设您正在使用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);
}
}
这样,片段可以在数据准备好之前加载。 然后,可以在接收到数据时对其进行填充。
根据您的设计,您可能希望在片段中默认显示加载进度动画,然后在使数据在回调中可见时将其隐藏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.