Какой контекст я использую для нового диалога? - PullRequest
0 голосов
/ 19 июня 2010

Мне нужно, чтобы пользовательское диалоговое окно появлялось при нажатии кнопки. Вот мой код:

Button button3 = (Button) findViewById(R.id.Button03); 
    button3.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

        final Dialog custdialog = new Dialog(this);


        custdialog.setContentView(R.layout.custom_drink);

        custdialog.setTitle("Custom Drink");

        custdialog.setCancelable(false);

 /etc.

Однако в этой строке: final Dialog custdialog = new Dialog (this);

Я получаю сообщение об ошибке: «Диалог конструктора (новый View.OnClickListener () {}) не определен».

Я пытался заменить «это» другими вещами, но безуспешно. Странно, что я получаю сообщение об ошибке в этой строке, потому что у меня есть та же самая вещь (кроме разных имен и материала) в моем проекте, под переключателем (как это:

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
    case R.id.settings: 

 final Dialog settingsdialog = new Dialog(this);

    settingsdialog.setContentView(R.layout.custom_dialog);

    settingsdialog.setTitle("Settings");

    settingsdialog.setCancelable(false);

и тот отлично работает ... хммм.

1 Ответ

2 голосов
/ 19 июня 2010

Во-первых, в вашем текущем вопросе вместо this используйте MyActivity.this, где MyActivity - имя класса Activity. Вы пытаетесь использовать это из внутреннего класса, но фактический объект, который вам нужен, это внешний класс.

Кроме того, никогда не используйте getApplicationContext() для чего-либо, особенно для всего, что связано с пользовательским интерфейсом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...