Подтвердить что ты не робот

Получить контекст внутри onClick (DialogInterface v, int buttonId)?

Получение контекста внутри onClick (View view), обратный вызов для кнопки OnClickListener прост:

  view.getContext()

Но я не могу понять, как получить контекст внутри onClick (DialogInterface v, int buttonId), обратный вызов для диалога OnClickListener:

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

Возможно ли вообще?

4b9b3361

Ответ 1

Вы можете ссылаться на внешний контекст, когда вы определяете свой DialogInterface.OnClickListener как анонимный класс. Если вы работаете, вы можете использовать MyActivity.this в качестве контекста.

Изменить - поскольку ваша активность реализует DialogInterface.OnClickListener, вы должны просто использовать this в качестве контекста.

Ответ 2

Если ваш DialogInterface находится в MainActivity, вы можете получить контекст, используя

MainActivity.this.getActivityContext();

Btw Вы также можете реализовать DialogInterface (в вашем примере кода вы дважды написали инструменты), и тот же оператор можно использовать для получения контекста активности.

Ответ 3

Вот как вы это делаете, если вы

  • не хотят использовать анонимный класс
  • или если ваша деятельность/фрагмент реализует интерфейс напрямую.

Просто,

  • использовать объект dialogInterface и передать его объекту Dialog
  • затем вызовите 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 и cast.