使用setMessage()在AlertDialog中显示多行文本和变量

Nav*_*ron 35 android text android-alertdialog

我需要在Alert Dialog中显示多行文本.如果我使用多个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);
Run Code Online (Sandbox Code Playgroud)

有没有办法在对话框中为每个这些创建一个新行?就像在System.print.out()中使用\n; 方法.

谢谢!

Ken*_*y C 76

你可以做这样的事情

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);   
Run Code Online (Sandbox Code Playgroud)

  • 您或其他人是否知道如何在字符串XML文件中执行此操作? (4认同)

Tof*_*erJ 23

你可以创建一个你想要显示的所有内容的字符串,并添加"\n"你想要的换行符.

alertDialog.setMessage("No. of attempts: " + counter + "\n" + 
            "No. of wins: " + counterpos + "\n" + 
            "No. of losses: " + counterneg);
Run Code Online (Sandbox Code Playgroud)

甚至更好地使用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());
Run Code Online (Sandbox Code Playgroud)

最好的方法是将静态文本提取到字符串资源中(在strings.xml文件中).如果要插入字符串而不是整数,请使用%d(或%s)以在正确的位置获取动态值:

<string name="alert_message">No. of attempts: %1$d\nNo. of wins: %2$d\nNo. of losses: %3$d</string>
Run Code Online (Sandbox Code Playgroud)

然后在代码中:

String message = getString(R.string.alert_message, counter, counterpos, counterneg);
alertDialog.setMessage(message);
Run Code Online (Sandbox Code Playgroud)


小智 12

您还可以直接在strings.xml文件中插入换行符:

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