在我的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
请建议我,我该怎么做才能解决这个问题,
等待回复。
感谢。
答案 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()