Диалог оповещения не показывает правильный текст - PullRequest
0 голосов
/ 20 октября 2018

Я только что создал диалоговое окно с несколькими элементами.Я устанавливаю текст в каждом элементе со значениями 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 голосов
/ 20 октября 2018

Правильная форма для получения строки из XML:

getString(R.string.select_image)

пример:

dialog.setTitle(getString(R.string.select_image));
0 голосов
/ 20 октября 2018

Вы делаете много вещей неправильно.Во-первых, вы можете объявить свой массив в строковых ресурсах.Я переписал ваш код, чтобы он работал.

Скопируйте приведенный ниже код и вставьте его в файл строковых ресурсов (например, 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();
    }

Теперь должно работать.

0 голосов
/ 20 октября 2018

String.valueOf(R.string.open_camera) не так, как получить текст из идентификатора ресурса в Android.Вы должны использовать getString(R.string.open_camera) для этого.

...