다운로드 완성을 청취하는 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
인터페이스를 구현하고 다른 인터페이스를 사용하여 조각에 데이터를 표시하고 싶지 않습니다.