簡體   English   中英

通過 getResources 和 getIdentifier 檢索時,資源字符串設置為“0”

[英]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()));

變化:

  1. 在對getIdentifier()的調用中使用“string”而不是“String” -> 這解決了將TextView設置為0的問題
  2. 刪除valueOf並將字符串的資源 ID 傳遞給setText() -> 這可以防止TextView被設置為2131755036例如

setText()有幾個不同的重載。 但是你想確保調用這個:

public final void setText (int resid)

不是這個:

public final void setText (CharSequence text)

另一方面,如果您想使用后者重載,則必須調用getString()並傳遞資源 ID 的 integer 值。

TextView 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM