繁体   English   中英

在数据返回之前加载片段

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM