66

onClick(View view)ボタンの のコールバックである内のコンテキストを取得するのonClickListener()は簡単です。

view.getContext()

しかし、ダイアログonClick(DialogInterface v, int buttonId)コールバックである内部のコンテキストを取得する方法がわかりませんonClickListener

public class MainActivity extends Activity implements android.content.DialogInterface.OnClickListener

これは可能ですか?

4

4 に答える 4

112

DialogInterface.OnClickListenerを匿名クラスとして定義すると、外部コンテキストを参照できます。アクティビティに参加している場合はMyActivity.this、コンテキストとして使用できます。

編集- Activity は を実装しているため、コンテキストとしてDialogInterface.OnClickListener使用できるはずです。this

于 2011-03-27T04:02:48.043 に答える
19

DialogInterface が MainActivity 内にある場合は、次を使用してコンテキストを取得できます

MainActivity.this.getActivityContext();

ところで、DialogInterface を実装することもでき (コード サンプルでは、​​implements を 2 回記述しています)、同じステートメントを使用してアクティビティ コンテキストを取得できます。

于 2011-03-27T04:02:04.430 に答える
16

場合に備えて、次のようにします。

  1. 匿名クラスを使用したくない
  2. または、アクティビティ/フラグメントにインターフェースを直接実装させます。

単純に、

  1. オブジェクトを使用してオブジェクトdialogInterfaceにキャストするDialog
  2. それから電話するgetContext()

DialogInterface.OnClickListener の例:

DialogInterface.OnClickListener foo = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int which) {
        Dialog dialog  = (Dialog) dialogInterface;
        Context context = dialog.getContext();
        // do some work with context
    }
};

これは、次のインターフェイスでも機能します。最初のパラメーターDialogInterface dialogInterfaceとキャストを使用するだけです。

于 2014-02-26T18:23:37.193 に答える