我可以协助你进行文本翻译。以下是需要翻译的内容:
当我在AsyncTask运行时旋转设备时,doInBackground()方法继续运行,然后在postExecute()中触发侦听器并启动我的片段中的回调方法,该方法具有我适配器和列表视图的旧引用:
如果用户按下按钮,asyncTask将把旧片段设置为侦听器,当异步任务正在运行时发生方向更改时,我认为激活的回调方法是新创建的片段方法中的回调方法,但我不确定了。
编辑2:
我已解决我的问题,正如我在第一次编辑中所说,回调方法被调用的是旧片段。所以我做的是在另一个名为“Info”的类中将我的asynctask保存在一个变量中,在onCreateView中我这样做:
这样,我在正在运行的异步任务的
我有一个包含Fragment的片段活动,该Fragment启动一个异步任务以下载一些数据,我在我的Fragment中实现了回调方法,用于更新适配器和ListView中的某些值。我遇到的问题是:这是我的onCreateView方法(重要部分):
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
list=(PullToRefreshListView)v1.findViewById(R.id.listapull);
adapterList=new ListViewAdapter(secciones, mContext);
}
当我在AsyncTask运行时旋转设备时,doInBackground()方法继续运行,然后在postExecute()中触发侦听器并启动我的片段中的回调方法,该方法具有我适配器和列表视图的旧引用:
![enter image description here](https://istack.dev59.com/q7grP.webp)
片段及其内容在方向更改时被重新创建,这是正确的,但是否有人知道为什么回调方法保留了先前创建的适配器和列表视图的引用?
编辑:
我有一个按钮,像这样执行asynctask:
asyncRefresh = new PullRefreshTask(taskContext, mContext, secciones);
asyncRefresh.setUpdatePull2RefreshListener(this);
asyncRefresh.execute();
如果用户按下按钮,asyncTask将把旧片段设置为侦听器,当异步任务正在运行时发生方向更改时,我认为激活的回调方法是新创建的片段方法中的回调方法,但我不确定了。
编辑2:
我已解决我的问题,正如我在第一次编辑中所说,回调方法被调用的是旧片段。所以我做的是在另一个名为“Info”的类中将我的asynctask保存在一个变量中,在onCreateView中我这样做:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
list=(PullToRefreshListView)v1.findViewById(R.id.listapull);
adapterList=new ListViewAdapter(secciones, mContext);
PullRefreshTasktask task = Info.getAsyncTask();
asyncRefresh = task;
asyncRefresh.setUpdatePull2RefreshListener(this);
}
这样,我在正在运行的异步任务的
方法中设置了我的片段的新引用。setUpdatePull2RefreshListener()
adapterList
是Fragment
内部类的一个实例。这可能是问题所在吗? - ernazm