resource字符串设置为“0”

mepcadol  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(397)

我´我在android工作室用java编程。
我只是不知道´我不明白为什么会这样:
我工作的结果 setText() 方法始终相同:“0”显示为buttontext。
这个 setText 我的按钮的方法:

button_adj1.setText(String.valueOf(getResources().getIdentifier("adj"+ counter,"String", getPackageName())));

计数器变量工作正常,并在单击后递增,这将提取 counter+1 第二次单击时的项目。
如果我替换 counter 例如。 3 ,结果也是 0 .
硬编码尝试:

button_adj1.setText(String.valueOf(getResources().getIdentifier("adj"+ 3,"String", getPackageName())));

资源文件: res/strings.xml :

<string name="adj1">Test0</string>
<string name="adj2"Test1</string>
<string name="adj3">Test2</string>
<string name="adj4">Test3</string>
<string name="adj5">Test4</string>
<string name="adj6">Test5</string>
<string name="adj7">Test6</string>
<string name="adj8">Test7</string>
<string name="adj9">Test8</string>
<string name="adj10">Test</string>

还有其他可能的方法吗?
我想 String.valueOf 正在转换的结果 getResources.getIdentifier 变成绳子?

nzk0hqpo

nzk0hqpo1#

尝试将其从以下位置更改:

button_adj1.setText(String.valueOf(getResources().getIdentifier("adj"+ counter,"String", getPackageName())));

收件人:

button_adj1.setText(getResources().getIdentifier("adj"+ counter,"string", getPackageName()));

变化:
在调用中使用“string”而不是“string” getIdentifier() ->这就解决了 TextView 正在设置为 0 删除 valueOf 而是将字符串的资源id传递给 setText() ->这样可以防止 TextView 正在设置为 2131755036 例如 setText() 有几个不同的重载。但您要确保调用此命令:

public final void setText (int resid)

不是这个:

public final void setText (CharSequence text)

另一方面,如果您想使用后者重载,那么 getString() 必须通过传递资源id的整数值来调用。
文本查看文档

相关问题