我目前正在使用一个应用程序,需要利用大量的AlertDialogs。我目前已经在这里编写了一个基本的代码:
protected void StopButton () {
AlertDialog.Builder StopDialog = new AlertDialog.Builder(MainActivity.this);
StopDialog.setTitle(R.string.Stop_Title);
StopDialog.setMessage(R.string.Stop_Message);
StopDialog.setPositiveButton(R.string.Yes_Button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
((Protoype2) getApplication()).setRequestingLocationUpdates(false);
finish();
}
});
StopDialog.setNegativeButton(R.string.No_Button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Protoype2) getApplication()).setRequestingLocationUpdates(true);
}
});
StopDialog.setNeutralButton(R.string.Negative_Button, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Closes box
finish();
}
});
AlertDialog alert = StopDialog.create();
alert.show();
}StopButton起作用,当我要求它时,对话框就出现了。但是,finish();函数不能工作。
经过回顾,我发现finish();没有完成对话框,而是完成了整个应用程序。我知道我需要一个AlertDialog.cancel。
问题是:如您所见,AlertDialog只在StopDialog完成后才创建。
如何在完成AlertDialog.finish()之前设置StopDialog ()?
发布于 2016-05-07 05:01:36
用这样的finish()替换dialog.dismiss():
AlertDialog.Builder StopDialog = new AlertDialog.Builder(TestActivity.this);
StopDialog.setTitle("Title");
StopDialog.setMessage("Stop");
StopDialog.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
((Protoype2) getApplication()).setRequestingLocationUpdates(false);
dialog.dismiss();
}
});
StopDialog.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Protoype2) getApplication()).setRequestingLocationUpdates(true);
}
});
StopDialog.setNeutralButton("Neutral", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Closes box
dialog.dismiss();
}
});
AlertDialog alert = StopDialog.create();
alert.show();发布于 2016-05-07 04:58:50
没有这样的方法finish()用于AlertDialog。finish()引用Activity类并将完成当前的Activity。您应该使用dismiss()。
您可以使用DialogInterface对象(如dialog.dismiss() )来取消AlertDialog。
您可以查看文档以获得更广泛的想法:)
http://developer.android.com/guide/topics/ui/dialogs.html
https://stackoverflow.com/questions/37084621
复制相似问题