gpt4 book ai didi

java - 使用自定义按钮关闭具有自定义界面的警报对话框

转载 作者:行者123 更新时间:2023-12-02 04:25:20 25 4
gpt4 key购买 nike

我有一个自定义警报对话框。我目前正在尝试更改两个按钮的 onclicklisteners。以前我使用过以下代码。

builder.setNegativeButton("Nope", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
dialog.dismiss();
}
});
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {
\\code here which is not relevant to question
}
});

但是,现在由于对话框具有自定义 View 和自定义按钮,因此我使用以下方法。

Button confirm = (Button) windowView.findViewById(R.id.confirmbutton);
Button cancel = (Button) windowView.findViewById(R.id.negatebutton);

cancel.setOnClickListener(new Button.OnClickListener() {

public void onClick(View v){

}

});

我的问题是,如果无法访问 dialog 变量,如何关闭取消按钮监听器中的对话框。我想使用我已经在使用的 AlertDialog,并且不想要具有不同类型对话框的解决方案。

最佳答案

你需要做的,只是保留对话框的引用,然后你就可以调用解雇方法。在我的示例中,我将引用保留为属性。

private Dialog dialog;

@Override
public void onResume() {

AlertDialog.Builder adb = new AlertDialog.Builder(this);

LinearLayout llView = new LinearLayout(this);

Button btnDismiss = new Button(this);
btnDismiss.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});

llView.addView(btnDismiss);

adb.setView(llView);
dialog = adb.create();
dialog.show();

super.onResume();
}

将引用保留为属性非常重要,因为引用必须是最终的才能在 onClick 方法内访问,并且由于对话框尚未创建,因此您不能将最终引用保留在方法变量中,然后将其保留在属性。

关于java - 使用自定义按钮关闭具有自定义界面的警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32259265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com