Как объединить строки и целые числа в переменную - PullRequest
2 голосов
/ 24 мая 2011

Это очень глупые вопросы, но я не могу заставить их работать.Я использовал опцию поиска, но не смог найти свой ответ для Android.

Что бы я хотел сделать следующим образом:

В res / strings.xml яполучил несколько строк

<string name="good0">blablabla</string>
<string name="good1">balablabla2</string>
etc

Я хочу показать эти строки случайным образом в тех случаях, когда что-то происходит:

Toast.makeText(this,R.string.good+(Math.random()*10), Toast.LENGTH_LONG).show();

Но это не работает.

Спасибомного за вашу помощь!

Ответы [ 4 ]

4 голосов
/ 24 мая 2011

Используйте String Array.

In strings.xml:

<resources>
    <string-array name="messages">
        <item>blablabla</item>
        <item>blablabla</item>
    </string-array>
</resources>

Тогда в коде вы получите что-то вроде:

String[] messages = getResources().getStringArray(R.array.messages);
Random r = new Random();
String message = messages[r.nextInt(messages.length)];
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
2 голосов
/ 24 мая 2011

R.string.good - это int, поскольку оно относится к ресурсу. Это int идентифицирует строку в файле XML. Android предоставляет getString() для своих идентификаторов ресурсов.

Документы Android на строковых ресурсах

Вы должны извлечь String из файла ресурсов таким образом, а затем объединить как обычно.

2 голосов
/ 24 мая 2011

Вы не можете этого сделать.

Вам придется использовать блок switch.

String myString;

switch(Math.random() * 10) {
   case 0:
       myString = getString(R.string.good1);
       break;
}

Toast.makeText(this, myString, Toast.LENGTH_LONG).show();
0 голосов
/ 16 октября 2012

Если у вас есть несколько строковых или целочисленных значений, и вы хотите сохранить их в одной строке, тогда String Builder лучше всего подходит для этого типа операций. Например, у вас есть строковый массив, и вы хотите сохранить его в одной строке изатем отобразите эту строку, затем используйте этот метод.это будет работать на сто процентов, и это слишком много подходит для этого типа проблем. **

String my_str=null;
StringBuilder bldr=new StringBuilder();
for(int j=0;j<5;j++)
  bldr.append(phonearray[j]).append(",");
my_str=bldr.toString();

здесь в этом случае я назначаю массив телефона одной строке, а затем я буду отображать его и т. д ...

...