【发布时间】:2018-07-06 10:57:53
【问题描述】:
我将我的应用程序作为具有不同片段的单个 Activity。我通过左侧的导航抽屉导航片段。问题是我需要为每个片段设置不同的工具栏。
我所做的是在片段布局中设置工具栏,如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.hectorviov.###.activity.HomeFragment">
<include
android:id="@+id/toolbar_logo"
layout="@layout/toolbar_logo" />
...
并在我的片段上将其设置为 SupportActionBar:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AppCompatActivity act = (AppCompatActivity)getActivity();
Toolbar mToolbar = act.findViewById(R.id.toolbar_logo);
act.setSupportActionBar(mToolbar);
}
它工作正常,问题是,它没有在操作栏的左侧显示汉堡图标。它向我显示了一个警告:
W/ActionBarDrawerToggle: DrawerToggle may not show up because NavigationIcon is not visible. You may need to call actionbar.setDisplayHomeAsUpEnabled(true);
所以我在谷歌上搜索了很多之后尝试了不同的方法来做到这一点。我尝试的最后一个是:
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
无论我尝试什么,它总是给我一个 NullPointerException:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hectorviov.###/com.hectorviov.###.activity.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setDisplayShowHomeEnabled(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
请帮忙!!
【问题讨论】:
-
也许对你有帮助-quora.com/…
-
@Adilhusen 我已经尝试过他们在那个问题中的建议,但没有奏效......
标签: java android android-fragments nullpointerexception android-actionbar