使用AsyncTask调试Android时挂起
以下是我的部分活动代码:使用AsyncTask调试Android时挂起,android,android-asynctask,classcastexception,Android,Android Asynctask,Classcastexception,以下是我的部分活动代码: button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { IParser = new ImageParser(MainActivity.this, EarthqpicUrl); IParser.execute(); } }); 这是
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
IParser = new ImageParser(MainActivity.this, EarthqpicUrl);
IParser.execute();
}
});
这是我的异步任务代码的一部分:
AsyncResponse lempar; *//this is An interface*
public ImageParser(Context actv, String EarthqpicUrl){
this.actv=actv;
this.EarthqpicUrl=EarthqpicUrl;
this.lempar = (AsyncResponse) actv;
}
这是接口代码:
import android.graphics.Bitmap;
public interface AsyncResponse {
public void processFinish(Bitmap output);
}
我使用相同的代码解析JSONData,它可以工作。但当我在类名等修改后使用相同的构造函数时,调试时会显示一个错误:
Thread [<1> main] (Suspended (Exception ClassCastException))
ImageParser.<init>(Context, String) Line:25
MainActivity$1.onCllick(View) line: 23
与JSONParser相同,我使用一个名为AsyncResponse的接口。您正在将类型为
Context
的对象强制转换为AsyncResponse
:
this.lempar = (AsyncResponse) actv;
这就是导致错误的原因。Thanx用于回复,但我使用这种方法是因为它以前适用于JSONParser而不是ImageParser。对于相同的代码,为什么它不能用于ImageParser?维克拉姆,你能帮我吗?问题解决了。发现它必须在MainActivity类中实现接口。@stsho89抱歉,我从一开始就假设您已经在
MainActivity
中实现了AsyncResponse
接口,因为您的JSONParser
正在运行。很高兴你的问题解决了。
this.lempar = (AsyncResponse) actv;