2011-05-06 1 views
27

Мне нужно отобразить несколько строк текста в диалоговом окне Alert. Если я использую несколько методов setMessage(), отображается только последний setMessage, как показано ниже.Отображение нескольких строк текста и переменных в AlertDialog с помощью 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(); метод.

Спасибо!

ответ

61

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

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); 
+0

Спасибо. Работает отлично – Navigatron

+3

Вы или кто-нибудь еще знаете, как это сделать в файле XML строк? – Kurty

+0

@ Kurty: см. Мой ответ ниже. – TofferJ

21

Вы можете просто создать одну строку всего, что вы хотите показать, и добавить «\ 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, если вы хотите, чтобы вставить строки, а не Интс), чтобы получить динамические значения в нужных местах:

<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); 
+0

Также пробовал этот метод работает так же хорошо. Спасибо – Navigatron

10

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

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