我正在尝试使用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”位于不同的布局上,当用户按下其他按钮时,该布局会打开(作为对话框)。
在这种情况下我该怎么办?
谢谢! :)
答案 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布局文件夹中创建的布局文件。