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 関数が定義されていないためです。

これをインターフェイスで定義し、アクティビティにこれを実装させる必要があります。

于 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 に答える