Take the 2-minute tour ×

For the below code I intended to get the system date and display it as per the formatting of the current locale, it's just that for the R.string.date. In emulator it always shows up as a long number (something like 821302314) instead of "Date: " which I has already externalized in the string.xml. Can anyone help to have a look why this is so?

final TextView mTimeText = (TextView)findViewById(R.id.mTimeText);

//get system date
Date date = new Date();
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText(R.string.date + " " + dateFormat.format(date));




<string name="date">Date:</string>
share|improve this question
strings.xml: <string name="date">Date:</string> –  Liliw Sep 26 '11 at 15:12
You should use getString(R.string.date) in place of R.string.date stackoverflow.com/questions/3363245/… –  Lola Sep 26 '11 at 15:28

3 Answers 3

R.string.date is indeed an int, you're missing the call to getText() or getString():

mTimeText.setText(getText(R.string.date) + " " + dateFormat.format(date));

Even better, don't build the string in your code, but use a template with getString(int resId, Object... formatArgs):

mTimeText.setText(getString(R.string.date, dateFormat.format(date)));

and in your string.xml:

<string name="date">Date: %s</string>
share|improve this answer
Thanks very much Philipp. I guess why a template is better is that it's not concatenating strings? –  Liliw Sep 26 '11 at 15:51
In this case it doesn't really make a difference, but depending on the language the sentence structure might be different (French is a prime candidate here :) ). Using a template saves you from doing string acrobatics in your code to support multiple languages. –  Philipp Reichart Sep 26 '11 at 16:24

To get string value from xml, you should call this.getString(R.id.nameOfString). In your case this would be mTimeText.setText(this.getString(R.string.date) + " " + dateFormat.format(date));

share|improve this answer

Yes, you will get the ID of the String if you use R.string.date. As stated in the docs

You can use either getString(int) or getText(int) to retrieve a string. getText(int) will retain any rich text styling applied to the string.



Read about it here: getString

share|improve this answer

Your Answer


