0
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
4

4 回答 4

4

您应该使用具有单一方法的接口:此处为“setFilters” 您的活动应该实现此接口,并且您的 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);      
}     
}
于 2012-11-05T13:22:13.753 回答
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;
}
于 2012-11-05T13:07:19.377 回答
1

这是因为 Activity 接口没有定义 setFilter 函数。

您应该在接口中定义它并让您的 Activity 实现它。

于 2012-11-05T13:08:44.417 回答
-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);      
    }     
}
于 2012-11-05T13:08:43.297 回答