我有点奇怪的情况 - 我有一个自定义对话框,当点击活动按钮时会打开。自定义对话框包含一个关闭按钮,单击该按钮可关闭对话框并将用户返回到活动。当我按原样运行代码时(如下所示),而不是启动自定义对话框,它将转到主要活动(我认为要么重新打开应用程序,要么以某种方式为主要活动创建虚构的意图)。但是,当我删除/注释关闭按钮的代码 - 突出显示为// ===此代码时,一切正常(自定义对话框打开)但关闭按钮不起作用。我不确定我错过了什么。
// Global variable
Button openDialog;
// ======
openDialog = (Button) findViewById(R.id.opendialog);
openDialog.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
final Dialog cusomDialog = new Dialog(sellActivity.this);
cusomDialog.setContentView(R.layout.customdialog);
// === This code
final Button close = (Button) findViewById(R.id.close);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cusomDialog.dismiss();
}
});
// === This code
cusomDialog.show();
}
});
有人可以对此有所了解,因为我真的很困惑。
答案 0 :(得分:4)
在Dialog
内初始化Dialog
的视图:
替换它:
final Button close = (Button) findViewById(R.id.close);
有了这个:
final Button close = (Button) cusomDialog.findViewById(R.id.close);
答案 1 :(得分:3)
首先,您应该传递cusomDialog
查看对象。
其次,对话创建并调用方法错误。
final Button close = (Button)cusomDialog.findViewById(R.id.close);
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cusomDialog.dismiss();
}
});
同样的问题
openDialog = (Button)cusomDialog.findViewById(R.id.opendialog); //Rectified
您应该阅读 Custom Dialog 以获取更多信息。
答案 2 :(得分:0)
我认为你应该夸大布局并获取视图并在自定义对话框中设置视图。
final Dialog cusomDialog = new Dialog(sellActivity.this);
View view = LayoutInflater.fromContext(sellActivity.this).inflate(R.layout.customdialog,false);
cusomDialog.setContentView(view);
Button close = (Button) view.findViewById(R.id.close);
祝你好运!!