[英]Android - getResources().getIdentifier() not finding the resource
[英]Resource string is set to "0" when retrieving via getResources and getIdentifier
我在 Android Studio 中使用 Java 進行編程。
我只是不明白,為什么會這樣:
我的setText()
方法的結果始終相同:“0”顯示為按鈕文本。
我的按鈕的setText
方法:
button_adj1.setText(String.valueOf(getResources().getIdentifier("adj"+ counter,"String", getPackageName())));
counter 變量工作正常並在點擊后增加,這應該在第二次點擊時提取counter+1
項目。
如果我用例如3
替換counter
,結果也是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
的結果轉換為字符串?
嘗試將其更改為:
button_adj1.setText(String.valueOf(getResources().getIdentifier("adj"+ counter,"String", getPackageName())));
到:
button_adj1.setText(getResources().getIdentifier("adj"+ counter,"string", getPackageName()));
變化:
getIdentifier()
的調用中使用“string”而不是“String” -> 這解決了將TextView
設置為0
的問題valueOf
並將字符串的資源 ID 傳遞給setText()
-> 這可以防止TextView
被設置為2131755036
例如 setText()
有幾個不同的重載。 但是你想確保調用這個:
public final void setText (int resid)
不是這個:
public final void setText (CharSequence text)
另一方面,如果您想使用后者重載,則必須調用getString()
並傳遞資源 ID 的 integer 值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.