鉴于
Android.xml:
<activity android:name='.IconListActivity'
android:label='@string/icon_list_activity_name'
/>
的strings.xml:
<string name='icon_list_activity_name>Icon List</string>
如何在 IconListActivity.class 的情况下访问字符串'Icon List'?
答案 0 :(得分:29)
PackageManager#getActivityInfo()
会返回ActivityInfo
结构,其中包含labelRes
和name
字段,其中一个字段应该包含您需要的字段。
答案 1 :(得分:10)
来自任何活动:
String label = null;
try {
label = getResources().getString(
getPackageManager().getActivityInfo(getComponentName(), 0).labelRes);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Log.d(LOG_TAG, "Activity Label: " + label);
答案 2 :(得分:7)
如果您拥有ComponentName,则可以执行以下操作:
PackageManager pm = getPackageManager();
ActivityInfo activityInfo = pm.getActivityInfo (componentName, 0);
Log.d ("ActivityLabel", activityInfo.loadLabel (pm).toString ());
答案 3 :(得分:2)
我们一直试图获取标签,但labelRes
返回0
,name
是活动的简单类名。
我们设法从标签获取字符串的方式(我们的目标是API 23,顺便说一句)是使用 nonLocalizedLabel 字段:
ComponentName cn = new ComponentName(this, MainActivity.class);
ActivityInfo info = getPackageManager().getActivityInfo(cn, 0);
Log.d(LOG_TAG, "label == " + info.nonLocalizedLabel);
答案 4 :(得分:0)
根据documentation for the activity element,name
xml属性适用于Activity
子类,即不与活动名称有关的任何内容。 labelRes
是此处所需的字段(对应于label
XML属性)。