2010-06-18 3 views
0

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

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);

Я получаю сообщение об ошибке «Конструктор Dialog (новый 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); 

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

+0

Вы попробовали Context.getApplicationContext() вместо этого? – Mike

+0

Я могу поставить «getApplicationContext()» там, и он работает, но я получаю FC, когда нажимаю кнопку. –

+0

Context.getApplicationContext() вместо этого дает мне ошибку «Контекст не может быть определен» –

ответ

2

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

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

+0

Спасибо. Я решил, что это будет легко исправить. –

 Смежные вопросы

  • Нет связанных вопросов^_^