gpt4 book ai didi

android - 对话框通用函数 - 基于用户按钮按下返回 bool 值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:57 24 4
gpt4 key购买 nike

我想写一个函数来显示一个警告对话框,它根据点击的按钮返回 bool 值

private Boolean ShowWarningMessageBox(String Title, String message)
{
boolean returnValue = false;

AlertDialog.Builder builder = new AlertDialog.Builder(
getApplicationContext());

builder.setTitle(Title);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
returnValue = true;
}
});

builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.cancel();
returnValue = false;
}
});

builder.show();

return returnValue;
}

我写了上面的函数,但问题是,内部类将无法访问 returnValue 变量,因为它不是最终的。但让它成为最终版本并不符合我的目的。

我是一名 c# 开发人员,我正在尝试在 android 中实现类似下面的功能

private DialogResult ShowWarningMessageBox(string errorMessage)
{
DialogResult result = MessageBox.Show(errorMessage,
Resources.WarningCaption.ToString(),
MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk,
MessageBoxDefaultButton.Button1);

return result;
}

任何帮助将不胜感激

最佳答案

完整的解决方案试试这个

1) 创建接口(interface)

import android.content.DialogInterface;

public interface AlertMagnatic {

public abstract void onButtonClicked(boolean value);

}

2) 确认对话框的泛化方法。

public static void getConfirmDialog(final Context mContext,
final String title, final String msg,
final String positiveBtnCaption, final String negativeBtnCaption,
final boolean isCancelable, final AlertMagnatic target) {

((Activity) mContext).runOnUiThread(new Runnable() {

@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);

int imageResource = android.R.drawable.ic_dialog_alert;
Drawable image = mContext.getResources().getDrawable(
imageResource);

builder.setTitle(title)
.setMessage(msg)
.setIcon(image)
.setCancelable(false)
.setPositiveButton(positiveBtnCaption,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
target.onButtonClicked(true);
}
})
.setNegativeButton(negativeBtnCaption,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int id) {
target.onButtonClicked(false);
}
});

AlertDialog alert = builder.create();
alert.setCancelable(isCancelable);
alert.show();
if (isCancelable) {
alert.setOnCancelListener(new OnCancelListener() {

@Override
public void onCancel(DialogInterface arg0) {
target.onButtonClicked(false);
}
});
}
}
});

}

3)使用方法

getConfirmDialog(getString(R.string.logout), getString(R.string.logout_message), getString(R.string.yes), getString(R.string.no), false,
new AlertMagnatic() {


@Override
public void onButtonClicked(boolean value) {

}
});

关于android - 对话框通用函数 - 基于用户按钮按下返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18842277/

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