0

ListView を持つアクティビティがあり、アダプターを設定しました

MyAdapter extends BaseAdapter

そのアダプタにはコールバック インターフェイスがあります

OnPdfClickedListener callback; 

public interface OnPdfClickedListener {
    public void onPdfClicked();

}

そしてアクティビティで

MyActvivity implements MyAdapter.OnPdfClickedListener

@Override
    public void onPdfClicked() {

    Log.d("TEST", "PDF CLICKED in ACTVIIVTY");

}

これは、ここで説明したものとほぼ同じで、フラグメントのチャームのように機能します。アダプタから同じことを試みると、コールバック オブジェクトは null です。

私も次のようにインスタンス化してみました

OnPdfClickedListener callback = new OnPdfClickedListener() {

    @Override
    public void onPdfClicked() {
        // TODO Auto-generated method stub

    }
};

エラーはありませんが、アクティビティのそれぞれのメソッドは呼び出されません。

私の質問は 1. フラグメントで使用されたときにコールバック オブジェクトが null にならないのはなぜですか。インスタンス化されることはありません。

2.アダプタからアクティビティにコールバックするにはどうすればよいですか?

4

2 に答える 2

0

これを追加してみてください:

インターフェイスを実装するアクティビティで:

new MyAdapter(this,....);

アダプターで:

MyAdapter(Context context, ...){
  callback = (OnPdfClickedListener)context;
}
于 2013-03-06T10:10:55.237 に答える