如何访问活动的android:label
给定 Android.xml:如何访问活动的android:label,android,Android,给定 Android.xml: <activity android:name='.IconListActivity' android:label='@string/icon_list_activity_name' /> Strings.xml: <string name='icon_list_activity_name>Icon List</string> PackageManager#getActivityInfo()返回一个ActivityIn
<activity android:name='.IconListActivity'
android:label='@string/icon_list_activity_name'
/>
Strings.xml:
<string name='icon_list_activity_name>Icon List</string>
PackageManager#getActivityInfo()
返回一个ActivityInfo
结构,该结构有一个labelRes
和一个name
字段,其中一个字段应该包含您所需的内容。根据,name
xml属性用于Activity
子类,也就是说,这与活动的名称无关labelRes
是此处需要的字段(对应于label
XML属性)。如果您有,则可以执行以下操作:
PackageManager pm = getPackageManager();
ActivityInfo activityInfo = pm.getActivityInfo (componentName, 0);
Log.d ("ActivityLabel", activityInfo.loadLabel (pm).toString ());
从任何活动中:
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);
我们正在尝试获取标签,但是labelRes
return0
和name
是活动的简单类名
我们设法从标签中获取字符串的方法(我们的目标是API 23,顺便说一句)是使用nonLocalizedLabel字段:
ComponentName cn = new ComponentName(this, MainActivity.class);
ActivityInfo info = getPackageManager().getActivityInfo(cn, 0);
Log.d(LOG_TAG, "label == " + info.nonLocalizedLabel);
您能给出一个您希望这样做的用例吗?也许我们能找到解决办法。另外,IconListActivity.class是否在同一apk中?IconListActivity是我在自学Android编程时编写的一项活动。为什么不在需要时使用R.string.icon\u list\u activity\u name
呢?太好了!正是我需要的。谢谢