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 !

mkjeldsen
  • 2,053
  • 3
  • 23
  • 28
scarhand
  • 4,269
  • 23
  • 63
  • 92
  • Search on google/web before posting questions, this is the simple thing u can even find out in docs too. – AAnkit May 22 '12 at 09:12

5 Answers5

11

I found the answer on Google:

getString(R.string.last_msg)
Glauco Vinicius
  • 2,527
  • 3
  • 24
  • 37
scarhand
  • 4,269
  • 23
  • 63
  • 92
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));
}
mkjeldsen
  • 2,053
  • 3
  • 23
  • 28
Mohammed Azharuddin Shaikh
  • 41,633
  • 14
  • 96
  • 115
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);
  }
Sandeep P
  • 4,291
  • 2
  • 26
  • 45
1

use below line

 lastMsg.setText(getString(R.string.last_msg) + " " + currentTimeStamp);
AAnkit
  • 27,299
  • 12
  • 60
  • 71
0

Try this :

lastMsg.setText(R.string.last_msg + " " + new SimpleDateFormat(d-MM-YYYY).format(new Date()));
IntelliJ Amiya
  • 74,896
  • 15
  • 165
  • 198
Kumar Vivek Mitra
  • 33,294
  • 6
  • 48
  • 75