【发布时间】:2016-11-08 13:43:18
【问题描述】:
我有一个片段,它通过一个类 NetworkConnector 以及一个监听下载完成的 RequestCompleteListener 类来初始化下载过程。
NetworkConnector 的构造函数
public NetworkConnector(Context ctx, String url, String methodType, int downloadId,
ArrayList<ArrayList<String>> postData, RequestCompleteListener<String> listener)
该类进行下载,并通过名为 RequestCompleteListener 的接口执行 OnRequestExecuted 方法。
public class OnRequestComplete implements RequestCompleteListener<String> {
private DataProcessInterface dataProcessInterface;
public OnRequestComplete(Context context) {
dataProcessInterface = (DataProcessInterface) context;
}
@Override
public void onRequestExecuted(String responseType, String result, int downloadId) {
if (!responseType.equals("error")) {
dataProcessInterface.processData(result, downloadId);
} else {
dataProcessInterface.processError(result, downloadId);
}
}
}
片段实现接口DataProcessInterface。而 OnRequestCompleted 方法通过接口在使用的片段中执行方法 processData 和 processError。
public class FoodListFragment extends Fragment implements DataProcessInterface {
当从活动中执行时,此过程可以正常工作。但是当这通过一个片段完成时,我得到ClassCastException,因为它需要片段的上下文来代替 ???下面。
new NetworkConnector(getActivity(), url, "GET", 101, null, new OnRequestComplete(???));
getActivity() 和 view.getContext() 不工作的原因很明显。当我尝试FoodListFragment.this 时,错误提示OnRequestComplete 需要上下文而不是片段。
那么应该通过什么来代替 ??? ?我不想在activity中实现DataProcessInterface接口,然后用另一个接口来展示fragment中的数据。
【问题讨论】:
标签: android android-fragments interface