2009-09-22 60 views
18

鉴于如何访问安卓标签的活动

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

+0

能否请您给一个用例,其中你希望这样做?也许我们可以找到解决方法。 此外,IconListActivity.class是否在相同的apk中或不是? – bhatt4982 2009-09-22 05:03:23

+0

IconListActivity是我在教授自己的Android编程时所写的活动。 – Scott 2009-09-22 15:46:48

+0

为什么不直接在需要的地方使用'R.string.icon_list_activity_name'? – gMale 2015-02-07 19:35:17

回答

26

PackageManager#getActivityInfo()返回一个ActivityInfo结构,它有一个labelRes和一个name字段,其​​中一个字段应该有你所需要的。

+3

完美!正是我需要的。谢谢! – Scott 2009-09-23 02:37:43

6

如果你有ComponentName,那么你就可以做到以下几点:

PackageManager pm = getPackageManager(); 
ActivityInfo activityInfo = pm.getActivityInfo (componentName, 0); 
Log.d ("ActivityLabel", activityInfo.loadLabel (pm).toString()); 
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); 
1

我们正在试图获取标签,但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);