如何访问Activity的android:label

时间:2009-09-22 02:04:30

标签: 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>

如何在 IconListActivity.class 的情况下访问字符串'Icon List'

5 个答案:

答案 0 :(得分:29)

PackageManager#getActivityInfo()会返回ActivityInfo结构,其中包含labelResname字段,其中一个字段应该包含您需要的字段。

答案 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返回0name是活动的简单类名。

我们设法从标签获取字符串的方式(我们的目标是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 elementname xml属性适用于Activity子类,即与活动名称有关的任何内容。 labelRes是此处所需的字段(对应于label XML属性)。