是否可以将String值更改为R.string引用名称?

时间:2015-02-12 02:26:10

标签: java android android-studio

标题有点令人困惑,所以让我进一步解释。我试图创建的应用程序有多个按钮打开一个看起来相同的新活动,但文本根据单击的按钮(如字典)而有所不同。因此,我没有重新创建50次以上的活动,而是使用新的Intent为第一个活动中的onClick()创建了一个新方法,并在第二个活动中添加了一个getIntent()。

//first activity method
public final static String TRANSFER_SYMBOL = "com.engineering.dictionary.MESSAGE";

public void openView(View view)
{
  Intent open = new Intent(this,displayCharHB.class);
  Button setBtn = (Button) findViewById(view.getId());
  String grabText = setBtn.getText().toString();
  String thisChar = "sym_hira_" + grabText;
  open.putExtra(TRANSFER_SYMBOL,thisChar);
  startActivity(open);
}


//second Activity method
@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent grabChar = getIntent();
    String thisChar = grabChar.getStringExtra(hira_basic.TRANSFER_SYMBOL);
    //String strValue = "R.string." + thisChar;


    TextView displaySym = (TextView) findViewById(R.id.charDisplay);
    displaySym.setText(thisChar);
}

sym_hira_ +存储在grabText中的任何内容是strings.xml中String的名称(例如,grabText =“ro”,sym_hira_ro是String名称)。是否可以使用setText()来引用该字符串名称,而不是实际将文本设置为“sym_hira _...”?

2 个答案:

答案 0 :(得分:1)

  

是否可以使用setText()

引用该字符串名称

使用getIdentifier使用名称<{1}}从strings.xml获取值:

int resId = getResources().getIdentifier(thisChar, "string",getPackageName());
displaySym.setText(getResources().getString(resId));

答案 1 :(得分:0)

你可以使用BeanShell执行&#34; R.string.xxxx&#34;命令获取字符串资源ID。

这是我的代码示例;

String str = "";
Interpreter i = new Interpreter();
i.set("context", MainActivity.this);
Object res = i.eval("com.example.testucmbilebase.R.string.hello_world");
if(res != null) {
    Integer resI = (Integer)res;
    str = MainActivity.this.getResources().getString(resI);
}