ダウンロードの完了を待ち受けるRequestCompleteListenerクラスとともにNetworkConnectorクラスを介してダウンロードプロセスを初期化するフラグメントがあります。フラグメントのコンテキストをインタフェースを介してフラグメント内のメソッドを実行するクラスに渡す
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
は断片ではなくコンテキストを求めています。
だから、???の代わりに何を渡す必要がありますか? ?アクティビティにDataProcessInterface
インターフェイスを実装し、別のインターフェイスを使用してフラグメント内のデータを表示する必要はありません。