Android:我如何從使用名字的資源獲取字符串?


Answers

我也有同樣的問題。 但是下面的代碼適用於我:驗證你的packageName是否正確。 你必須引用你的Android應用程序的根包。

private String getStringResourceByName(String aString) {
      String packageName = getPackageName();
      int resId = getResources().getIdentifier(aString, "string", packageName);
      return getString(resId);
    }
Question

我希望為用戶界面使用兩種語言,並在我的資源文件res\values\strings.xml為它們分隔字符串值:

<string name="tab_Books_en">Books</string>
<string name="tab_Quotes_en">Quotes</string>
<string name="tab_Questions_en">Questions</string>
<string name="tab_Notes_en">Notes</string>
<string name="tab_Bookmarks_en">Bookmarks</string>

<string name="tab_Books_ru">Книги</string>
<string name="tab_Quotes_ru">Цитаты</string>
<string name="tab_Questions_ru">Вопросы</string>
<string name="tab_Notes_ru">Заметки</string>
<string name="tab_Bookmarks_ru">Закладки</string>

現在我需要在我的應用程序中動態檢索這些值:

spec.setContent(R.id.tabPage1);
String pack = getPackageName();
String id = "tab_Books_" + Central.lang;
int i = Central.Res.getIdentifier(id, "string", pack);
String str = Central.Res.getString(i);

我的問題是, i = 0

為什麼它不適用於我的情況?







還有一組預定義的Android字符串,例如“Ok”,“Cancel”等等 - 因此您不必聲明全部。 它們僅通過以下方式可用:

getString(android.R.string.ok)

(在這種情況下,“確定”字符串)。 順便說一句,還有其他Android資源可用,例如圖標圖像等




String myString = getString(R.string.mystring);

簡單的方法




getResources().getString(getResources().getIdentifier("propertyName", "string", getPackageName()))