Как использовать onClickListener, когда кнопки имеют разную раскладку? - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь использовать onClickListener, но продолжаю получать исключения Null.

Это вызов onClickListener -

        View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {

                      // code here

            }
        }
    };

    button1 = findViewById(R.id.button1);
    button1.setOnClickListener(onClickListener);

'button1' находится на другоммакет , который открывается (как диалог), когда пользователь нажимает какую-то другую кнопку.

Что я могу сделать в этом случае?

Спасибо!:)

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Идея в том, чтобы получить ссылку на представление для вашего Dialog.

Сначала вы надуваете XML-макет для вашего Dialog:

LayoutInflater inflater = getLayoutInflater();
View dialogLayout = inflater.inflate(R.layout.dialog_layout, null);

Затем выустановите это как представление для вашего нового Dialog:

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setView(dialogLayout);

Затем вы можете получить ссылку на Button от надутого View и установить вас OnClickListener:

Button yourButton = (Button)dialogLayout.findViewById(R.id.yourbutton);
/// do the click listener assignment

Покажите свой Dialog пользователю:

builder.show();
0 голосов
/ 29 ноября 2018

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

Я назвал метод showPopup;

Dialogue ViewSview_student_dialogue;
view_student_dialogue = new Dialogue(getApplicationContext());

private void showStudentPopup(String name,String id_gender) {
        TextView cancelpopup,st_name,id_and_gender;
        view_student_dialogue.setContentView(R.layout.custom_student_popup);
        cancelpopup = (TextView)view_student_dialogue.findViewById(R.id.cancel);
        st_name = (TextView)view_student_dialogue.findViewById(R.id.st_name);
        id_and_gender = (TextView)view_student_dialogue.findViewById(R.id.id_and_gender);

        st_name.setText(name);
        id_and_gender.setText(id_gender);

        cancelpopup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                view_student_dialogue.dismiss();
            }
        });
        view_student_dialogue.getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.white)));
        view_student_dialogue.show();
    }

Обратите внимание, что custom_student_popup - это файл макета, который я создал в resпапка макета.

0 голосов
/ 29 ноября 2018

Используйте инфлятор макета, чтобы сначала накачать это представление, а затем установить слушателя.

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