public class AycanClass extends AsyncTask<String, Void, String> implements IAppointments {
Activity activity;
public AycanClass(Activity activity){
this.activity = activity;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
activity.setFilters(value);
}
}
现在在我的MainActivity类中,我有这样的方法。
public void setFilters(String result){
}
我无法调用此方法。
The method setFilters(result) is undefined for the type Activity
答案 0 :(得分:4)
您应该使用具有单一方法的界面:here&#34; setFilters&#34; 您的活动应该实现此接口,并且您的asynctask构造函数将要求您的接口实例。
public interface ISetFiltersInterface{
public void setFilters(List<Filter>);
}
public class MyActivity extends Activity implements ISetFiltersInterface{
...
public void setFilters(List<Filter>){
//TODO
}
}
public class AycanClass extends AsyncTask<String, Void, String> implements IAppointments {
ISetFiltersInterface delegate;
public AycanClass(ISetFiltersInterface delegate){
this.delegate = delegate;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
delegate.setFilters(value);
}
}
答案 1 :(得分:2)
编辑:让您的活动实现一个包含该方法的界面。
public interface FilterableActivity {
public void setFilters(String result);
}
活动应如下所示:
public class MainActivity extends Activity implements FilterableActivity {
...
public void setFilters(String result){
}
}
只需将FilterableActivity作为参数传递给Asynctask。
public AycanClass(FilterableActivity activity){
this.activity = activity;
}
答案 2 :(得分:1)
这是因为Activity接口没有定义setFilter函数。
您应该在界面中定义它,并让您的Activity实现这一个。
答案 3 :(得分:-1)
public class AycanClass extends AsyncTask<String, Void, String> implements IAppointments {
Activity activity;
MainActivity mainactivityobjectname;
public AycanClass(Activity activity){
this.activity = activity;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
mainactivityobjectname.setFilters(value);
}
}