Как использовать Dialog OnClick Listner в Android? - PullRequest
0 голосов
/ 03 июня 2011

Я новичок в разработке Android. Пожалуйста, извините, если мой вопрос очень прост.

Я попытался создать кнопку в моем представлении макета Android с использованием XML. Сейчас в классе Activity я пытаюсь получить кнопку и добавить к ней список щелчков. Это работает нормально без каких-либо проблем.

В аналогичных строках при нажатии кнопки, как я объяснил ранее, у меня появляется диалоговое окно. В этом диалоге у меня есть ImageButton. При нажатии этой кнопки изображения я пытаюсь установить список щелчков, используя приведенный ниже код.

 The Activity on create is as below

@ Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final Button button = (Button) findViewById(R.id.btnAdd);        
    button.setOnClickListener(this);

}

 @Override
public void onClick(View v) {
final Button btnAdd = (Button) findViewById(R.id.btnAdd);
         if(v==btnAdd) {
            dialog = new Dialog(this);
            dialog.setContentView(R.layout.add_dialog);
            dialog.setTitle("Test Title.");
            dialog.setCancelable(true);

            dialog.show();

        final ImageButton button = (ImageButton) findViewById(R.id.imageButton1);
        try {
            Log.i("Log","1");
            button.setOnClickListener(this);
            Log.i("Log","2");

        }
        catch(Exception e)
        {
            Log.i("Log","3");
            dialog.dismiss();
            //Dialog d = new Dialog(this);
            //d.setTitle("test.");
            Toast.makeText(this,e.getMessage(),Toast.LENGTH_LONG).show();
            Toast.makeText(this,e.getLocalizedMessage(),Toast.LENGTH_LONG).show();
            Toast.makeText(this,e.toString(),Toast.LENGTH_LONG).show();
            Log.i("Log","4");
            //d.show();
            Log.i("Log","5");

        }
     }

}

Выше я получаю Лог в этой последовательности. 1,3,4,5. Я не получаю 2. В тосте я получаю сообщение пустым, пустым, за которым следует java.lang.Nullexception.

Но это, когда выполнено, дает мне силу, появляющуюся близко. Пожалуйста, посоветуйте, как это сделать. Или есть ли обходной путь для того же? Мне нужно диалоговое окно для нажатия кнопки, а затем в диалоговом окне мне нужно иметь более одного варианта кнопок. Для каждой из кнопок в диалоге мне нужно выполнить разные действия. Любая помощь или совет заметны. Заранее спасибо за ваше время и помощь.

1 Ответ

3 голосов
/ 03 июня 2011

Скорее всего, вы пытаетесь получить кнопку из класса Activity.Он возвращает ноль, потому что этот метод будет извлекать только ресурсы, прикрепленные к Activity (используя метод setContentView).

У вас есть два варианта:

  • Вы можете раздуть макет диалогаиспользуя LayoutInflater
  • Если вы расширяете класс Dialog, вместо этого добавьте слушателя внутри этого класса.

Редактировать после обновления:

Как я уже говорил выше, проблема заключается в следующем:

   final ImageButton button = (ImageButton) findViewById(R.id.imageButton1);

, поскольку imageButton1 не является частью макета в упражнении.Просто замените его на:

   final ImageButton button = (ImageButton) dialog.findViewById(R.id.imageButton1);
...