Reference string resource from code

2019-01-19 18:52发布

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 !

5条回答
啃猪蹄的小仙女
2楼-- · 2019-01-19 19:06

I found the answer on Google:

getString(R.string.last_msg)
查看更多
地球回转人心会变
3楼-- · 2019-01-19 19:06

Try this :

lastMsg.setText(R.string.last_msg + " " + new SimpleDateFormat(d-MM-YYYY).format(new Date()));
查看更多
The star\"
4楼-- · 2019-01-19 19:08

use below line

 lastMsg.setText(getString(R.string.last_msg) + " " + currentTimeStamp);
查看更多
迷人小祖宗
5楼-- · 2019-01-19 19:25

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));
}
查看更多
该账号已被封号
6楼-- · 2019-01-19 19:25
// 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);
  }
查看更多
登录 后发表回答