标题有点令人困惑,所以让我进一步解释。我试图创建的应用程序有多个按钮打开一个看起来相同的新活动,但文本根据单击的按钮(如字典)而有所不同。因此,我没有重新创建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 _...”?
答案 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);
}