如何在 android 片段中使用异步任务填充 Listview 并应在片段启动时加载

How to populate Listview with async task in android fragment and should load on fragment launch

我正在开发一个 android 应用程序,使用片段和异步任务来填充列表视图数据,主要问题是异步任务无法在调用片段时自动在 onCreateView() 中执行,也无法保存当我在片段之间切换时的实例状态

尝试在fragment中使用onActivityCreated()方法。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
} 

我建议使用服务来加载,在任务完成时使用 LocalBroadcastManager 向片段发送消息。

老爹

正如钱德拉所说,尝试在 OnActivityCreated() 方法中执行您的 AsyncTask。 当数据加载到数据对象时,然后将其填充到列表视图适配器中,如下所示。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
             new AsyncGetData().execute();
}


class AsynGetData extends AsyncTask<Void, Void, Void>{

            @Override
            protected Void doInBackground(Void... params) {

                // Add data into dataObject from web-services or database into ArrayList or String[] and use this dataObject in OnPostExecute() method below

                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);

                listView.setAdapter(new CustomAdapter(getActivity(), dataObject));

            }

}

我已经能够解决问题,在我的 asyncTask onPreExecute() 中,我有 refreshMenuItem,这是导致主要问题的原因,所以我在 onPreExecute() 中使用 ProgressDialog 解决了它 class