1

我正在尝试使用要从我的 strings.xml 动态检索的各种字符串来切换 textview 的 android:text。当用户按下网格上的按钮时,它将返回一个唯一标识符。我想使用此标识符将字符串动态加载到 Pronoun textView 中。

gridView.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
      TextView Pronoun = (TextView) findViewById(R.id.Prounoun);
      chosen = ((TextView) v).getText();
      //Inserts the identifier of what button was pressed into the local string chosen".
      Pronoun.setText("R.string.Pronoun_" + chosen);
   }
}

当按下按钮'a'时,'chosen'持有字母'a',当将其加入字符串命名格式“Pronoun_”时,产生“Pronoun_a”。目的是在这个位置调用字符串。实际上,文本实际上是“R.string.Pronoun_a”,而不是检索 Pronoun_a 的实际字符串内容。如果按下按钮'b',我希望'Pronoun_b'的字符串内容显示在textView中。我是 Java 新手,只是想重新创建我用另一种语言学到的技术。有没有办法做到这一点?

4

2 回答 2

0

使用它(使用您的实际包名称):

String resKey = "your.apps.package:string/Pronoun_"+chosen;
int resId = getResources().getIdentifier(resKey, null, null);
Pronoun.setText(resId);

另请参阅API 文档

注意:正如 AND_DEV 已经提到的,您必须使用ActivityName.this.getResources().

于 2013-02-07T19:21:07.640 回答
0

代替

Pronoun.setText("R.string.Pronoun_" + chosen);

试试下面的线

Pronoun.setText(ActivityName.this.getString(R.string.Pronoun_) ++ chosen);

它将在活动上下文中工作,但在 onclick 我认为你应该使用ActivityName.this. 你也可以使用context变量,如果你已经创建了。这里的 ActivityName 是您编写您的代码的活动名称。

于 2013-02-07T18:24:40.310 回答