【问题标题】:Use Asynctask for multiple Fragments对多个 Fragment 使用 Asynctask
【发布时间】:2018-09-20 13:56:19
【问题描述】:
我有 2 个片段 java 类,需要使用相同的异步任务。无论如何我可以做到这一点,还是我必须在两个片段类中复制/粘贴相同的异步任务?我总共有这 3 个 java 类:
- 主要活动
- dataTabelFragment
- sensorOverviewFragment
asynctask 正在从 json URL 获取数据。
也许可以为异步任务创建另一个 java 类?
感谢所有帮助!
【问题讨论】:
标签:
java
android
android-asynctask
fragment
【解决方案1】:
您所说的建议您应该将异步任务代码与两个片段分离,而是让您的片段调用以完成工作的单独工作人员(也许IntenstService 会在这里为您提供良好的服务)。或者,取决于你的代码结构(如果你还没有考虑过这个,你应该考虑一下:)也许你的异步任务代码应该是你片段的基类的一部分,然后它们都会扩展。
【解决方案2】:
我猜你的片段在同一个Activity(MainActivity)中,所以你可以把你的AsyncTask放在你的MainActivity.class中,你的片段可以通过监听器与你的Activity通信。像这样的:
public class YourFragment extends Fragment{
private YourListener mListener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mListener = (YourListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement YourFragment");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
interface OnSearchFilterListener {
void onItemClick(int position);
}
}