0

これは私の非常に単純化されたバージョンですActivity

public class Search extends Activity {

    //I need to access this.
    public SearchResultsAdapter objAdapter;

    public boolean onOptionsItemSelected(MenuItem itmMenuitem) {


      if (itmMenuitem.getItemId() == R.id.group) {

          final CharSequence[] items = {"Red", "Green", "Blue"};

          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setTitle(itmMenuitem.getTitle());

          builder.setSingleChoiceItems(lstChoices),
              0, new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int item) {
                  //I need to access it from here.
                }

              });

          AlertDialog alert = builder.create();
          alert.show();

          return true;

        } 

    }

}

メニュー ボタンを押すと、アプリケーションがAlertDialog. AlertDialogとインラインを作成するとonClickListener、ダイアログ内の各項目に添付されます。objAdapaterアクティビティで定義されている変数にアクセスする必要がありますSearch。内の検索インスタンスにonClickListenerアクセスできないため、アクセスできません。Activity私のコードには、どこにでもインスタンスを渡すというちょっとしたスープがあります。多分私は何か間違ったことをしています。

メソッドと変数にアクセスできるように、自分の中からActivitySearchインスタンス)にアクセスするにはどうすればよいですか。onClickListener

ありがとうございました。

4

2 に答える 2

4

リスナーからのSearch.this.objAdapterアクセスにを使用すると機能するはずです。objAdapter

Search.thisの現在のインスタンスを参照し、Searchそのフィールドとメソッドにアクセスできるようにします。

于 2012-08-28T10:46:38.563 に答える
1

アクティビティにOnClickListenerを実装させます。

public class Search  extends Activity implements DialogInterface.OnClickListener { ...

onclickメソッドをアクティビティに追加します。

public void onClick(DialogInterface dialog, int item) {
     //I need to access it from here.
}

次に、アクティビティをリスナーとして渡します。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(itmMenuitem.getTitle());

builder.setSingleChoiceItems(lstChoices),0, this);
于 2012-08-28T10:46:25.960 に答える