警报对话框未显示正确的文本

时间:2018-10-20 17:14:24

标签: android android-alertdialog

我刚刚创建了一个包含多个项目的警报对话框。我在每个项目中都设置了string.xml值的文本,但未显示corect值。

代码如下:

private void showImageImportDialog() {
    String[] items = new String[]{String.valueOf(R.string.open_camera), String.valueOf(R.string.open_gallery)};
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle(R.string.select_image);
    dialog.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (which == 0){
                ......

            }
            if (which == 1) {
                ......
            }
        }
    });
    dialog.create().show();
}

string.xml

<resources>
<string name="open_camera">Camera</string>
<string name="open_gallery">Gallery</string>
<string name="select_image">Select Image</string>

3 个答案:

答案 0 :(得分:0)

String.valueOf(R.string.open_camera)并不是如何从Android中的资源ID获取文本。为此,您必须使用getString(R.string.open_camera)

答案 1 :(得分:0)

从xml中获取字符串的正确形式是

getString(R.string.select_image)

示例:

dialog.setTitle(getString(R.string.select_image));

答案 2 :(得分:0)

您做错了很多事情。首先,您可以在字符串资源中声明数组。我已经重写了您的代码以使其正常工作。

复制以下代码并将其粘贴到您的字符串资源文件中(例如res/string.xml

<string-array name="titles">
    <item>Camera</item>
    <item>Gallery</item>
    <item>Select Image</item>
</string-array>

然后,用以下代码替换您的Java代码。

  private void showImageImportDialog() {
        String[] items = getResources().getStringArray(R.array.titles);
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle(items[2]);
        dialog.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        });
        dialog.create().show();
    }

现在应该可以工作。