我想显示一个对话框/弹出窗口,向用户显示一条消息“您确定要删除此条目吗?”,其中一个按钮说“删除”。当点击Delete时,它应该删除该条目,否则什么都不删除。

我已经为这些按钮写了一个点击监听器,但我如何调用对话框或弹出窗口及其功能?


当前回答

这是在kotlin中完成的

val builder: AlertDialog.Builder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert)
        } else {
            AlertDialog.Builder(this)
        }
        builder.setTitle("Delete Alert!")
                .setMessage("Are you want to delete this entry?")
                .setPositiveButton("YES") { dialog, which ->

                }
                .setNegativeButton("NO") { dialog, which ->

                }
                .setIcon(R.drawable.ic_launcher_foreground)
                .show()

其他回答

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("This is Title");
    builder.setMessage("This is message for Alert Dialog");
    builder.setPositiveButton("Positive Button", (dialog, which) -> onBackPressed());
    builder.setNegativeButton("Negative Button", (dialog, which) -> dialog.cancel());
    builder.show();

这是一种类似于用一行代码创建Alert对话框的方法。

对我来说

new AlertDialog.Builder(this)
    .setTitle("Closing application")
    .setMessage("Are you sure you want to exit?")
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {

          }
     }).setNegativeButton("No", null).show();

你可以使用下面的代码:

AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(
    AlertDialogActivity.this);

// Setting Dialog Title
alertDialog2.setTitle("Confirm Delete...");

// Setting Dialog Message
alertDialog2.setMessage("Are you sure you want delete this file?");

// Setting Icon to Dialog
alertDialog2.setIcon(R.drawable.delete);

// Setting Positive "Yes" Btn
alertDialog2.setPositiveButton("YES",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // Write your code here to execute after dialog
            Toast.makeText(getApplicationContext(),
                           "You clicked on YES", Toast.LENGTH_SHORT)
                    .show();
        }
    });

// Setting Negative "NO" Btn
alertDialog2.setNegativeButton("NO",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // Write your code here to execute after dialog
            Toast.makeText(getApplicationContext(),
                           "You clicked on NO", Toast.LENGTH_SHORT)
                    .show();
            dialog.cancel();
        }
    });

// Showing Alert Dialog
alertDialog2.show();
   new AlertDialog.Builder(v.getContext()).setMessage("msg to display!").show();

现在与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/