android-studio - 无法关闭自定义 AlertDialog
问题描述
所以我有一个带有三个不同按钮(父按钮)的应用程序,按下其中任何一个按钮时,都会显示带有 9 个不同按钮的自定义警报对话框,但是警报对话框中这 9 个按钮的功能会有所不同,具体取决于三个父按钮中的哪一个叫它。在按下 9 个按钮中的任何一个时,我希望应用程序执行特定功能,然后关闭警报对话框。现在的问题是,我可以通过调用我创建的方法轻松调用警报对话框,showcustomdialog();
但我无法alertdialog.dismiss();
在父按钮的 OnClickListener 内使用它来关闭它,因为该方法具有 void 结果类型。我试过使用 if-else 语句,但它不起作用。我怎样才能达到要求?
方法:
private void showCustomDialog() {
ViewGroup viewGroup = findViewById(android.R.id.content);
View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_main2, viewGroup, false);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialogView);
final AlertDialog alertDialog = builder.create();
alertDialog.show();
}
我打电话给肉食并按如下方式使用它:
parentbutton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showCustomDialog();
alertbutton1.getId();
alertbutton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView1.setText("500");
function();
//I want to dismiss the alertdialog here.
}
});
alertbutton2.getId();
alertbutton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textView1.setText("1000");
function();
//I want to dismiss the alertdialog here.
}
});
等等。
解决方案
我为您找到了使用 AlertDialog 的解决方案。
parentbutton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
createDialog();
}
});
那么该方法必须是私有或公共的 AlertDialog:
private AlertDialog createDialog() {
LayoutInflater inflater = (getActivity()).getLayoutInflater(); // for fragment or getLayoutInflater(); for activity
View v = inflater.inflate(R.layout.dialog_add_new_list, null);
Button okButton = v.findViewById(R.id.confirm_button);
Button cancelButton = v.findViewById(R.id.cancel_button);
final AlertDialog dialog = new AlertDialog.Builder(getActivity()) // for fragment or AlertDialog.Builder ( this ) for activity
.setView(v)
.show();
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View p1) {
dialog.dismiss();
}
});
return dialog;
}
PS 用你的替换我用来创建这个示例的 id。
推荐阅读
- parallel-processing - Julia - @spawn 按顺序而不是并行计算作业
- python - Pandas - 使用 PostCoder 在每一行中查找纬度和经度,然后在新列中返回 Postcode
- keras - 开发用于线性回归的网络时遇到问题
- python - 根据一列数组从 pandas.dataframe 中进行选择
- python - 为什么 Python 的形状不符合 Keras 的预期?
- oauth-2.0 - ADAL.js 是否支持带有 PKCE 扩展的新授权代码授予?
- c# - 为什么 MongoDB 查询没有返回任何结果?(按截止日期过滤)
- r - 如何为等效项目/零件创建组 ID?
- java - 如何在忽略某些字符串的同时搜索数组列表以查找重复值
- java - 如何将两个 JavapairRDD 组合成一个自定义的 JavapairRDD?