如何通过编程方式java android获取活动标题名称

时间:2014-12-09 10:08:41

标签: java android

在我的Android应用程序中,我在AndroidManifest.xaml中设置活动的标题名称,如下所示:

<activity
       android:name=".LoginSuccess"
       android:label="Home" > // this is title name
</activity>

活动标题名称是Home,我想在我的actitvity的java页面中获得这个actitvity标题名称,我在尝试如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_sample);

        android.support.v7.app.ActionBar actionBar = getSupportActionBar();
        pageTitle = actionBar.getTitle().toString(); 
}

但我在这一行pageTitle = actionBar.getTitle().toString();

以下的例外情况
java.lang.NullPointerException

请建议我,我该怎么做才能解决这个问题,

等待回复。

感谢。

6 个答案:

答案 0 :(得分:15)

你也可以从PackageManager

得到这样的结果
ActivityInfo activityInfo = getPackageManager().getActivityInfo(
                getComponentName(), PackageManager.GET_META_DATA);
String title = activityInfo.loadLabel(getPackageManager())
                .toString();

答案 1 :(得分:2)

ActionBar actionBar = getActionBar();
String classTitle = actionBar.getTitle().toString(); 

答案 2 :(得分:0)

这是因为你试图在创建标题之前获得标题。

您可以尝试使用onCreate方法延迟执行此操作:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_sample);

         new Handler().postDelayed(new Runnable() {

            @Override
            public void run() { 

                 android.support.v7.app.ActionBar actionBar = getSupportActionBar();
                 pageTitle = actionBar.getTitle().toString(); 
            }
        }, 500);
}

工作正常。

答案 3 :(得分:0)

在Strings.xml中定义你的字符串,然后尝试做同样的事情,它可能有效。

答案 4 :(得分:0)

我知道距上一篇帖子已经有一段时间了,但是对于那些(像我一样)正在寻找该问题的解决方案的人...。您不需要操作栏即可获取Manifest的活动标签,只需执行在Activity的onStart中执行以下操作:

@Override
protected void onStart() {
    super.onStart();
    String pageTitle = getTitle();// it´s not available in onCreate yet
}

答案 5 :(得分:-1)

尝试使用以下代码获取类文件中的当前活动名称。

this.getClass().getSimpleName()