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

为什么它不适用于我的情况?




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



还有一组预定义的Android字符串,例如“Ok”,“Cancel”等等 - 因此您不必声明全部。 它们仅通过以下方式可用:

getString(android.R.string.ok)

(在这种情况下,“确定”字符串)。 顺便说一句,还有其他Android资源可用,例如图标图像等




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

简单的方法







Related