Подтвердить что ты не робот

Отображение нескольких строк текста и переменных в AlertDialog с помощью setMessage()

Мне нужно отобразить несколько строк текста в диалоговом окне Alert. Если я использую несколько методов setMessage(), отображается только последний setMessage, как показано ниже.

final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
                alertDialog.setTitle("Statistics:");
                alertDialog.setMessage("No. of attempts: " + counter);
                alertDialog.setMessage("No. of wins: " + counterpos);
                alertDialog.setMessage("No. of losses: " + counterneg);

Есть ли способ создать новую строку для каждого из них в диалоговом окне? Подобно использованию \n в System.print.out(); Метод.

Спасибо!

4b9b3361

Ответ 1

Вы можете сделать что-то вроде этого

String alert1 = "No. of attempts: " + counter;
String alert2 = "No. of wins: " + counterpos;
String alert3 = "No. of losses: " + counterneg;
alertDialog.setMessage(alert1 +"\n"+ alert2 +"\n"+ alert3);   

Ответ 2

Вы можете просто создать одну строку всего, что вы хотите показать, и добавить "\n", где вам нужны разрывы строк.

alertDialog.setMessage("No. of attempts: " + counter + "\n" + 
            "No. of wins: " + counterpos + "\n" + 
            "No. of losses: " + counterneg);

Или даже лучше использовать StringBuilder:

StringBuilder sb = new StringBuilder();
sb.append("No. of attempts: " + counter);
sb.append("\n");
sb.append("No. of wins: " + counterpos);
sb.append("\n");
sb.append("No. of losses: " + counterneg);
alertDialog.setMessage(sb.toString());

И лучший способ сделать это - извлечь статические тексты в строковый ресурс (в файле strings.xml). Используйте% d (или% s, если вы хотите вставить строки, а не int), чтобы получить динамические значения в правильных местах:

<string name="alert_message">No. of attempts: %1$d\nNo. of wins: %2$d\nNo. of losses: %3$d</string>

И затем в коде:

String message = getString(R.string.alert_message, counter, counterpos, counterneg);
alertDialog.setMessage(message);

Ответ 3

Вы также можете вставлять новые строки непосредственно в файл strings.xml:

<string name="my_string_text">This would revert your progress.\n\n Are you sure you want to proceed?</string>