自定义对话框无法与'setOnClickListener'安卓工作室一起使用

时间:2017-01-17 10:09:22

标签: android button onclicklistener android-alertdialog customdialog

我有点奇怪的情况 - 我有一个自定义对话框,当点击活动按钮时会打开。自定义对话框包含一个关闭按钮,单击该按钮可关闭对话框并将用户返回到活动。当我按原样运行代码时(如下所示),而不是启动自定义对话框,它将转到主要活动(我认为要么重新打开应用程序,要么以某种方式为主要活动创建虚构的意图)。但是,当我删除/注释关闭按钮的代码 - 突出显示为// ===此代码时,一切正常(自定义对话框打开)但关闭按钮不起作用。我不确定我错过了什么。

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


        }
    });

有人可以对此有所了解,因为我真的很困惑。

3 个答案:

答案 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);

祝你好运!!