Reference string resource from code
Asked Answered
P

5

5

I have the following string declared in strings.xml:

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

Now when someone clicks a button, I want a textview to show this string, with a space, then a variable value that is a timestamp.

Unfortunately, using @string/last_msg isn't working, and I'm not sure how to do this properly so I'm not hardcoding in content.

Here's my code for the onClick function:

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

I'm a newbie, any help would be great !

Peck answered 22/5, 2012 at 9:6 Comment(1)
Search on google/web before posting questions, this is the simple thing u can even find out in docs too.Koeninger
P
11

I found the answer on Google:

getString(R.string.last_msg)
Peck answered 22/5, 2012 at 9:8 Comment(1)
To clarify, this is android.content.Context#getString.Idiolect
G
10

you cant access String directly by @, for that you need to have context resource and then just do this...

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

in your case use

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

implementation:

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));
}
Gavra answered 22/5, 2012 at 9:9 Comment(0)
D
6
// getString is method of context
if (this instanceof Context) 
//If you are in Activity or Service class            
 lastMsg.setText(getString(R.string.last_msg)+ " " + currentTimeStamp);
else                         
//you need to context to get the string 
  lastMsg.setText(getString(mContext,R.string.last_msg)+ " " + currentTimeStamp);


  public String getString(Context mContext, int id){
     return mContext.getResources().getString(id);
  }
Disestablish answered 22/5, 2012 at 9:8 Comment(5)
so i dont need to use the getString function??Peck
when i dont use the getString function it just comes up as an integer and not the string...Peck
No need to use here, in android R is the Resource class, all the resources stored in the raw folder have ids in the R classDisestablish
String myString = lastMsg.getString().toString();Disestablish
This doesn't work as R.string.last_msg is an int, you can't add a String to an int. You'll have at least to use getString(). See @Ankit's answer for an example.Sensational
K
1

use below line

 lastMsg.setText(getString(R.string.last_msg) + " " + currentTimeStamp);
Koeninger answered 22/5, 2012 at 9:9 Comment(0)
C
0

Try this :

lastMsg.setText(R.string.last_msg + " " + new SimpleDateFormat(d-MM-YYYY).format(new Date()));
Complementary answered 22/5, 2012 at 9:13 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.