我想显示一个对话框/弹出窗口,向用户显示一条消息“您确定要删除此条目吗?”,其中一个按钮说“删除”。当点击Delete时,它应该删除该条目,否则什么都不删除。
我已经为这些按钮写了一个点击监听器,但我如何调用对话框或弹出窗口及其功能?
我想显示一个对话框/弹出窗口,向用户显示一条消息“您确定要删除此条目吗?”,其中一个按钮说“删除”。当点击Delete时,它应该删除该条目,否则什么都不删除。
我已经为这些按钮写了一个点击监听器,但我如何调用对话框或弹出窗口及其功能?
当前回答
你可以创建Activity并扩展AppCompatActivity。然后在清单中加入下一种风格
<activity android:name=".YourCustomDialog"
android:theme="Theme.AppCompat.Light.Dialog">
</activity>
充气它的按钮和TextViews
然后把这个当做一个对话。
例如,在linearLayout中,我填充下一个参数:
android:layout_width="300dp"
android:layout_height="wrap_content"
其他回答
LayoutInflater inflater = LayoutInflater.from(HistoryActivity.this);
final View vv = inflater.inflate(R.layout.dialog_processing_tts, null);
final AlertDialog.Builder alert = new AlertDialog.Builder(
HistoryActivity.this);
alert.setTitle("Delete");
alert.setView(vv);
alert.setCancelable(false)
.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
databaseHelperClass.deleteHistory(list.get(position).getID());
list.clear();
setAdapterForList();
}
})
.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
final AlertDialog dialog = alert.create();
dialog.show();
David Hedlund发布的代码给了我错误:
无法添加窗口-空令牌无效
如果你得到同样的错误,请使用下面的代码。它的工作原理!
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!isFinishing()){
new AlertDialog.Builder(YourActivity.this)
.setTitle("Your Alert")
.setMessage("Your Message")
.setCancelable(false)
.setPositiveButton("ok", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Whatever...
}
}).show();
}
}
});
你可以试试这个....
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setCancelable(false);
dialog.setTitle("Dialog on Android");
dialog.setMessage("Are you sure you want to delete this entry?" );
dialog.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
//Action for "Delete".
}
})
.setNegativeButton("Cancel ", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Action for "Cancel".
}
});
final AlertDialog alert = dialog.create();
alert.show();
欲了解更多信息,请查看此链接…
现在最好使用DialogFragment而不是直接创建AlertDialog。
怎么做?参见:https://stackoverflow.com/a/21032871/1390874 为什么?参见:https://stackoverflow.com/a/13765411/1390874
现在与Jetpack撰写引入android,你可以简单地创建警报对话框使用下面的代码
if (viewModel.shouldDialogOpen.value) {
AlertDialog(onDismissRequest = { viewModel.shouldDialogOpen.value = false },
title = { Text("Delete Entry?") },
text = {
Text("Are you sure you want to delete this entry?")
},
dismissButton = {
Button(modifier = Modifier.fillMaxWidth(), onClick = {
viewModel.shouldDialogOpen.value = false
}) {
Text(text = "Cancel")
}
}, confirmButton = {
Button(modifier = Modifier.fillMaxWidth(), onClick = {
viewModel.shouldDialogOpen.value = false
viewModel.beginDelete(recipe)
}) {
Text(text = "Okay")
}
})
}
在viewModel中。shouldDialogOpen, shouldDialogOpen是viewmodel中的一个mutablestate字段,当我们需要显示或解散对话框时,我们会改变它的值。
更多的代码样本Jetpack撰写:- https://androidlearnersite.wordpress.com/2021/08/03/jetpack-compose-1-0-0-sample-codes/