安卓AlertDialog构建器

6

我有一个AlertDialog,但无论我做什么,它显示的标题和信息都是空白的。图标、积极按钮和消极按钮显示正确的描述。以下是我使用的代码片段:

在清单文件中:

<uses-sdk
android:minSdkVersion="5"
android:targetSdkVersion="16" />

在我的代码中我声明:

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;

我还声明上下文:
final Context context = this;

我把我的警告放在:

public void confirm() {

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

        // set title

        alertDialogBuilder.setTitle("This is title");
        alertDialogBuilder.setIcon(R.drawable.ic_delete);

        // set dialog message
        alertDialogBuilder
        .setMessage("This is the message")
            .setCancelable(false)
            .setPositiveButton(R.string.yes,new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,int id) {
                    // if this button is clicked, close
                    // current activity
                    MainActivity.this.finish();
                }
              })
            .setNegativeButton(R.string.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();


}

我会很乐意为您翻译。这段内容的意思是“我需要在需要的地方调用确认函数,如下所示:”。
confirm();

警告框正常显示。 图标已设置。 setPositiveButton 良好,并包含正确的描述。 setNegativeButton 良好,并包含正确的描述。
标题为空。 消息为空。
有什么想法吗?

欢迎来到SO!这里有几个小提示:你可以大幅度减少代码片段的长度(正面和负面消息对问题并不是很相关)。同时,使用问题标题来概括你的问题(例如:“如何设置AlertDialog的标题和消息?”)。 - bacar
谢谢bacar。然而,这不是一个“如何设置AlertDialog标题和消息”的问题,因为它们在其他类中运行良好。问题是,在ListActivity下,它们(标题和消息)为什么无法出现,而所有其他元素(PositiveButton、NegativeButton、Icon)都可以出现。 - joe_developer
当然,那只是一个例子。顺便说一句,根据你的提问,我不可能知道那些事实。更清晰的表述是值得的——标题应该是问题的简洁、有表现力的摘要,而不是一组主题/主题——这就是标签的作用。其次,在你的评论中透露出你在类似但不同的例子中已经解决了它。你应该编辑你的问题正文,包括这个例子,并说明有什么不同(ListActivity)。请参阅编写完美的问题 - bacar
再次感谢bacar。经验会让我变得更好!!;-) - joe_developer
标题是否已设置,但由于主题中设置的字体颜色而无法看到它? - ravindu1024
4个回答

5

您可以使用

        AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);
        builder.setTitle("Modify Customer Details");

或者

        Dialog dialog = new Dialog(YourActivity.this);
        dialog.setTitle("Payment Options");

3

试着用这种方式设置消息和标题。这来自对话框开发者指南

// 1. 通过构造函数实例化一个AlertDialog.Builder

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

// 2. 将各种setter方法链接在一起,设置对话框的特性
builder.setMessage(R.string.dialog_message)
       .setTitle(R.string.dialog_title);

// 3. 从create()方法获取AlertDialog

AlertDialog dialog = builder.create();

1
手头有更多信息。当类扩展Activity时,AlertDialog可以正常工作。只有当它扩展ListActivity时,AlertDialog才会出现问题。肯定与上下文有关。但请记住,AlertDialog确实出现了,图标也出现了,按钮也是正确的。只有消息和标题是空白的。我尝试从类内部填充子视图并在其中显示AlertDialog,但仍然没有运气。 - joe_developer

0

这与你的主题相关,需要在上下文("this")中检查此上下文。 或者你应该填充自己的视图,并调用setView将其放置。


0
请将代码中的 alertDialog 创建行修改为:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this, android.R.style.Theme_Material_Light_Dialog_Alert);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接