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));
<TextView
android:id="@+id/mTimeText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/date"
/>
<string name="date">Date:</string>
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>
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.
Example:
this.getString(R.string.date);
Read about it here: getString
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));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With