当前位置: 首页 > 知识库问答 >
问题:

带有一个、两个和三个按钮的Android警报对话框

卫彭亮
2023-03-14

我不经常发出警报,但每次发出警报时,我都要花一段时间阅读文档并找出如何发出警报。既然我已经做了几次了,我将在下面写一个答案,我可以在将来再回来。具体来说,我想比较

  • 一个按钮(确定)

如果能将这三种常见警报类型的基本代码放在一个位置,以便于将来参考和修改,那就太好了。这个问题是问一个按钮怎么做。

共有1个答案

盛城
2023-03-14
import android.support.v7.app.AlertDialog;

public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("My title");
        builder.setMessage("This is my message.");

        // add a button
        builder.setPositiveButton("OK", null);

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}
public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("AlertDialog");
        builder.setMessage("Would you like to continue learning how to use Android alerts?");

        // add the buttons
        builder.setPositiveButton("Continue", null);
        builder.setNegativeButton("Cancel", null);

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}
public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Notice");
        builder.setMessage("Launching this missile will destroy the entire universe. Is this what you intended to do?");

        // add the buttons
        builder.setPositiveButton("Launch missile", null);
        builder.setNeutralButton("Remind me later", null);
        builder.setNegativeButton("Cancel", null);

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

如果按钮文本太长,无法水平排列,那么它将自动排列在三个按钮的垂直列中。

在上述示例中,OnClickListenernull。当用户点击一个按钮时,你可以用一个监听器代替null。例如:

builder.setPositiveButton("Launch missile", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {

        // do something like...
        launchMissile();
    }
});

你可以制作更多种类的对话。有关这方面的帮助,请参阅文档。

由于警报对话框只支持三个按钮,因此下面是一个带有列表的对话框示例。

public class MainActivity extends AppCompatActivity {

    public void showAlertDialogButtonClicked(View view) {

        // setup the alert builder
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Choose an animal");

        // add a list
        String[] animals = {"horse", "cow", "camel", "sheep", "goat"};
        builder.setItems(animals, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                switch (which) {
                    case 0: // horse
                    case 1: // cow
                    case 2: // camel
                    case 3: // sheep
                    case 4: // goat
                }
            }
        });

        // create and show the alert dialog
        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

有关单选按钮列表和复选框列表的类似示例,请参见此答案。

>

  • 使用字符串资源,而不是硬编码字符串
  • 您可以将所有内容封装在一个扩展了DialogFragment的类中,以便于重用对话框。(请参见此以获取帮助。)
  • 这些示例使用支持库来支持API 11之前的版本。所以进口应该是

    import android.support.v7.app.AlertDialog;
    

    为了简洁起见,我省略了上面示例中的onCreate方法。那里没有什么特别的。

    • 如何禁用正极按钮
    • 用祝酒词而不是短信提醒
    • 单选列表、单选按钮列表和复选框列表
    • 如何实现自定义AlertDialog视图

  •  类似资料:
    • 我正在使用iSpeech的API用于TTS,在他们的示例android项目中,他们有两个带有两个OnClickListener的按钮,一个用于开始演讲,一个用于停止演讲。我想把它保持在一个按钮上,以便在android屏幕上有更多的空间,这样,如果语音停止,按下按钮就会开始,如果语音开始,按下按钮就会停止。 有很多类似的问题,答案表明最好保持一个监听器一个按钮,但我不太满意,因为这个问题是在多个监听

    • 我是Android新手,我在我的项目中创建了一个基本的警报对话框,它只有[一条消息和一个积极按钮和一个消极按钮],消息是一个问题,询问[你想从账户中退出吗?],按下消极按钮关闭警报对话框,按下积极按钮也会关闭警报对话框,什么也不做。我想消极按钮只是关闭警报对话框,就像它一样,但是当我按下积极按钮时,它会为我做两件事[1-从应用程序中退出,2-开始我的活动,称为LoginActivity.kt] 注

    • 我现在一筹莫展。 请求代码收集在一个ArrayList中,这样当程序退出时,另一个函数可以清除所有警报。 现在的问题是:我的警报器打不响。我能够找到这个函数的错误。AlarmManager实例很好。我在底部设置了一个测试警报(在带有星号的行之后)。着火了。为什么???

    • 最近我从支持库切换到com.google.android.Material:Material:1.0.0 但是现在我遇到了一个问题,在这个页面中有一个注释https://github.com/Material-Components/Material-Components-android/blob/master/docs/geting-started.md 注意:使用Material Compone

    • 问题内容: 这是一个滑块难题。拼图完成后,我想显示一个带有“确定”按钮的对话框。当按下“确定”按钮时,我使用来通过Android浏览器加载网站。唯一的问题是,使用当前代码,当拼图完成后,它不会加载一个框(当我使用时会加载)。它什么也没做。有任何想法吗? 问题答案: 试试这个

    • 问题内容: 我需要一个假定具有两个功能的按钮。 如果我点击一次,它将转到下一页。如果我按住按钮,它将允许我编辑按钮上的文本。 单击该按钮可以转到下一页,但是如果我按住该按钮,该如何实现允许我更改文本的第二个功能? 有人知道吗 Java代码 xml代码 问题答案: 您可以将第二个函数设置为setOnLongClickListener: 第一个函数是与setOnclickListener相同的: 检查