在 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
接口。
在 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
接口。