当按钮的布局不同时,如何使用onClickListener?

时间:2018-11-29 20:05:48

标签: android android-studio android-layout onclicklistener

我正在尝试使用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 :(得分:0)

首先使用布局充气器将视图充气,然后设置侦听器。

答案 1 :(得分:0)

这里的想法是为您的Dialog的视图提供参考。

首先,为您的Dialog扩充xml布局:

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

答案 2 :(得分:0)

您必须使用对话框的按钮来增加布局。 例如,这是我的显示弹出窗口的方法。

我已将方法命名为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布局文件夹中创建的布局文件。