如何在 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
我正在开发一个 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