这是我的代码,用于初始化AlertDialog
; buildexit
为AlertDialog.Builder
,exitalert
为AlertDialog
:
buildexit=new AlertDialog.Builder(this);
buildexit.setTitle("Exit?");
buildexit.setIcon(R.drawable.ic_action_warning);
buildexit.setMessage("Do you want to really exit?");
buildexit.setPositiveButton("Yes", this);
buildexit.setNegativeButton("No", this);
exitalert=buildexit.create();
我希望在用户点击“是”按钮时使用Activity.finish()
方法终止应用程序,如果单击“否”则不会发生任何事情,我还实现了android.content.DialogInterface.OnClickListener
接口,方法已实施public void onClick(DialogInterface arg0, int arg1)
提前谢谢。
答案 0 :(得分:14)
我知道这是一个老问题,但如果你像我一样,并因为你在google搜索而结束这里,这可能是你正在寻找的。 p>
为避免为每个按钮创建新的DialogInterface.onClickListener()
,您可以让该类实现AlertDialog.OnClickListener
,然后覆盖public void onClick(DialogInterface dialog, int which)
。
此方法中的int which
是单击的按钮或位置。有关更多详细信息,请参阅Android Reference。
因此,如果要查看单击了哪个按钮,可以使用switch-case并查找常量BUTTON_NEGATIVE
,BUTTON_NEUTRAL
和BUTTON_POSITIVE
。
示例:
// skipping package and imports
public class TestActivity extends Activity implements AlertDialog.OnClickListener {
void createAndShowDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.title);
builder.setMessage(R.string.message);
builder.setPositiveButton(android.R.string.yes, this);
builder.setNeutralButton(android.R.string.cancel, this);
builder.setNegativeButton(android.R.string.no, this);
builder.create().show();
}
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case BUTTON_NEGATIVE:
// int which = -2
dialog.dismiss();
break;
case BUTTON_NEUTRAL:
// int which = -3
dialog.dismiss();
break;
case BUTTON_POSITIVE:
// int which = -1
TestActivity.this.finish();
dialog.dismiss();
break;
}
}
答案 1 :(得分:3)
试试这个:
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
// set title
alertDialogBuilder.setTitle("Your Title");
// set dialog message
alertDialogBuilder
.setMessage("Click yes to exit!")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, close
// current activity
MainActivity.this.finish();
}
})
.setNegativeButton("No",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
答案 2 :(得分:0)
AlertDialog buildexit = new AlertDialog.Builder(this)
.setTitle("Exit?")
.setIcon(R.drawable.ic_launcher)
.setMessage("Do you want to really exit?")
.setPositiveButton("Yes", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity.this.finish();
}
})
.setNegativeButton("No", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.create();
buildexit.show();
答案 3 :(得分:0)
使用 Kotlin 和 lambdas:
val alertDialog = AlertDialog.Builder(atakContext)
alertDialog.setTitle("Error!")
alertDialog.setMessage("Please ")
alertDialog.setPositiveButton("OK") { dialog: DialogInterface?, whichButton: Int ->
//Do something
}
alertDialog.show()
答案 4 :(得分:0)
您可以使用 Lambda 来缩短代码。 Java
AlertDialog.Builder buildexit = new AlertDialog.Builder(this);
buildexit.create();
buildexit.setTitle("Exit?");
buildexit.setIcon(R.drawable.ic_action_warning);
buildexit.setMessage("Do you want to really exit?");
buildexit.setPositiveButton("Yes", (dialog, id) ->
{
this.finish();
});
buildexit.setNegativeButton("No", (dialog, id) ->
{
//Leaving this empty will close this onClick
});
buildexit.show();