2

我在用于创建自定义警报对话框的布局文件中有一个按钮。由于不相关的原因,我需要使用布局内的按钮,而不是使用对话框内置按钮。

它实际上与这个问题非常相似:

Android:AlertDialog中的按钮

问题是,当我点击警报对话框中的按钮时,似乎永远不会调用 onClick。

这是我活动中 OnCreate 中代码的相关部分:

LayoutInflater dcvI = LayoutInflater.from(this);
final View dcv = dcvI.inflate(R.layout.dialog,null);
final Button sd_abort = (Button)dcv.findViewById(R.id.abort1);
sd_abort.setOnClickListener(new View.OnClickListener() {
           public void onClick(View v) {

//I do work here

}});

警报对话框代码:

View exp =  LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog,null,false);

new AlertDialog.Builder(MainActivity.this, R.style.CustomDialogTheme)
.setTitle("Warning!!!")
.setIcon(R.drawable.dhd_icon)
.setView(exp)
.show();

有谁知道我是否遗漏了使按钮和 onclick 侦听器无法连接的东西?

谢谢

4

1 回答 1

4

您可以创建一个新的按钮侦听器类

public class ButtonListener implements OnClickListener {

    @Override
    public void onClick(View v) {
        // do your work

    }

}

然后将它们设置在你的两个按钮上

ButtonListener buttonListener = new ButtonListener();
sd_abort.setOnClickListener(buttonListener);

(在你的对话中)

View exp =  LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog,null,false);

Button dialogButton = (Button)exp.findViewById(R.id.abort1);
dialogButton.setOnClickListener(buttonListener);
new AlertDialog.Builder(MainActivity.this, R.style.CustomDialogTheme)
.setTitle("Warning!!!")
.setIcon(R.drawable.dhd_icon)
.setView(exp)
.show();
于 2013-07-05T16:32:17.890 回答