Строковый ресурс ссылки из кода

У меня есть следующая строка, объявленная в strings.xml:

<string name="last_msg">Your last click was on</string>

Теперь, когда кто-то нажимает кнопку, я хочу, чтобы текстовое представление отображало эту строку с пробелом, а затем значение переменной, являющееся отметкой времени.

К сожалению, использование @string/last_msg не работает, и я не уверен, как это сделать правильно, поэтому я не жестко кодирую контент.

Вот мой код для функции onClick:

public void showMsgNow(View view) {
    TextView lastMsg = (TextView)findViewById(R.id.textView2);
    long currentTimeStamp = System.currentTimeMillis();
    lastMsg.setText(@string/last_msg + " " + currentTimeStamp);
}

Я новичок, буду рада любой помощи!


person scarhand    schedule 22.05.2012    source источник
comment
Прежде чем задавать вопросы, поищите в google/web, это простая вещь, которую вы можете найти даже в документах.   -  person AAnkit    schedule 22.05.2012


Ответы (5)


Я нашел ответ в Google:

getString(R.string.last_msg)
person scarhand    schedule 22.05.2012
comment
Чтобы уточнить, это android.content.Context#getString. - person AMTerp; 18.03.2021

вы не можете получить доступ к String напрямую с помощью @, для этого вам нужно иметь контекстный ресурс, а затем просто сделать это...

lastMsg.setText(context.getResources().getString(R.string.last_msg) + " " + currentTimeStamp);

в вашем случае используйте

<string name="last_msg">Your last click was on %1$s</string>

реализация:

public void showMsgNow(View view) {
    TextView lastMsg = (TextView)findViewById(R.id.textView2);
    long currentTimeStamp = System.currentTimeMillis();
    lastMsg.setText(context.getResources()
        .getString(R.string.last_msg, currentTimeStamp));
}
person Mohammed Azharuddin Shaikh    schedule 22.05.2012

использовать строку ниже

 lastMsg.setText(getString(R.string.last_msg) + " " + currentTimeStamp);
person AAnkit    schedule 22.05.2012

Попробуй это :

lastMsg.setText(R.string.last_msg + " " + new SimpleDateFormat(d-MM-YYYY).format(new Date()));
person Kumar Vivek Mitra    schedule 22.05.2012

person    schedule
comment
поэтому мне не нужно использовать функцию getString ?? - person scarhand; 22.05.2012
comment
когда я не использую функцию getString, она просто появляется как целое число, а не как строка... - person scarhand; 22.05.2012
comment
Не нужно использовать здесь, в Android R - это класс ресурсов, все ресурсы, хранящиеся в необработанной папке, имеют идентификаторы в классе R. - person Sandeep P; 22.05.2012
comment
Строка myString = lastMsg.getString().toString(); - person Sandeep P; 22.05.2012
comment
Это не работает, поскольку R.string.last_msg является целым числом, вы не можете добавить строку в целое число. Вам нужно будет хотя бы использовать getString(). См. Ответ @Ankit для примера. - person Marc Plano-Lesay; 08.11.2013