在 AsyncTask 中投射

Casting in AsyncTask

fragmentHome 中,我实现了一个 TaskCompleted 接口,它只有一个方法“onTaskComplete”,它从 AsyncTask 中获取结果字符串,然后fragmentHome中的实现,将字符串作为文本放入TextView.

这是 asyncTask class 中的代码,return 我在转换时出现致命异常:

....private Context mContext;


private TaskCompleted mCallback;

public MyAsyncTaskClass(Context context){
    this.mContext = context;
    this.mCallback = (TaskCompleted) context;

}....

和 onPostExecute 我这样做:

mCallback.onTaskComplete(results);

我用 fragmentHome 中的 onClick 这样调用 asynkTask:

new MyAsyncTaskClass(myContext).execute(URI.create("http://urlthatcontainsmydata"));

myContext 所在的位置:

private FragmentHome myContext;
........public void onAttach(Activity activity) {
    myContext = (FragmentHome) activity;
    super.onAttach(activity);
}......

感谢您的帮助,如果您需要更多详细信息,请询问。

已编辑:Stacktrace

04-20 15:12:41.449  26365-26365/com.mypackage E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.ClassCastException: com.mypackage.MainActivity cannot be cast to com.mypackage.TaskCompleted
        at com.mypackage.MyAsyncTaskClass.<init>(MyWellWS.java:32)
        at com.mypackage.FragmentHome.onClick(HomeFragment.java:129)
        at android.view.View.performClick(View.java:4211)
        at android.view.View$PerformClick.run(View.java:17362)
        at android.os.Handler.handleCallback(Handler.java:725)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5227)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
        at dalvik.system.NativeStart.main(Native Method)

您的 Activity 似乎没有实现 TaskCompleted 接口。