Reference string resource from code

2019-01-19 18:56发布

问题:

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 !

回答1:

I found the answer on Google:

getString(R.string.last_msg)


回答2:

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));
}


回答3:

// 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);
  }


回答4:

use below line

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


回答5:

Try this :

lastMsg.setText(R.string.last_msg + " " + new SimpleDateFormat(d-MM-YYYY).format(new Date()));