片段在数据返回之前加载

时间:2015-01-19 23:25:13

标签: android

在我的应用程序中,它启动了一个片段,在onCreate方法中,我异步地进行Web服务调用,这需要大约2秒的时间才能返回数据。但到那时,片段已经完成加载。因此,屏幕上不会显示任何数据。

我试着把一个线程睡了2秒,但那也没办法。

1 个答案:

答案 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);
    }
}

这样,片段可以在数据准备好之前加载。然后,可以在收到数据时填充数据。

根据您的设计,您可能希望片段中默认显示加载进度动画,然后在回调中显示数据时隐藏它。