Java 抽屉布局汉堡和工具栏不可见,尽管导航抽屉工作?

Java 抽屉布局汉堡和工具栏不可见,尽管导航抽屉工作?,java,android,navigation-drawer,Java,Android,Navigation Drawer,我目前正在创建一个导航菜单,没有使用片段。我似乎已经创建了一个工作系统,通过使用BaseActivity并将其继承到需要抽屉的类中,来打开类并在每个阶段保持导航栏。然而,在加载应用程序时,3条“汉堡”图标似乎不存在,顶部的工具栏也不存在(见图)。导航栏似乎可以工作,因为我可以从左侧滑动并单击以加载其他类。我觉得我的BaseActivity中的onCreate()缺少了一些东西,但通过谷歌搜索,我似乎找不到解决方案 本期图片: 导航条在后台处理问题的图像: 这是我的基本活动: import a

我目前正在创建一个导航菜单,没有使用片段。我似乎已经创建了一个工作系统,通过使用
BaseActivity
并将其继承到需要抽屉的类中,来打开类并在每个阶段保持导航栏。然而,在加载应用程序时,3条“汉堡”图标似乎不存在,顶部的工具栏也不存在(见图)。导航栏似乎可以工作,因为我可以从左侧滑动并单击以加载其他类。我觉得我的
BaseActivity
中的
onCreate()
缺少了一些东西,但通过谷歌搜索,我似乎找不到解决方案

本期图片:

导航条在后台处理问题的图像:

这是我的基本活动:

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;

public class BaseActivity extends AppCompatActivity {

    DrawerLayout drawerLayout;
    ActionBarDrawerToggle actionBarDrawerToggle;
    Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);

        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_closed);
        drawerLayout.addDrawerListener(actionBarDrawerToggle);


        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
                Intent anIntent;
                switch (item.getItemId()) {

                    case R.id.nav_homepage:
                        anIntent = new Intent(getApplicationContext(), homepage.class);
                        startActivity(anIntent);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.nav_add_roster:
                        anIntent = new Intent(getApplicationContext(), add_roster.class);
                        startActivity(anIntent);
                        drawerLayout.closeDrawers();
                        break;
                    case R.id.nav_check_schedule:
                        anIntent = new Intent(getApplicationContext(), schedule.class);
                        startActivity(anIntent);
                        drawerLayout.closeDrawers();
                        break;
                }
                return false;
            }
        });
    }
}
这是我最初加载的主页:

import android.os.Bundle;
import android.widget.FrameLayout;

public class homepage extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_frame); //Remember this is the FrameLayout area within your content_main.xml
        getLayoutInflater().inflate(R.layout.homepage, contentFrameLayout);
    }
}
以下是我的主要活动:

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/content_frame"/>

    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

您可以尝试此操作,在BaseActivity中添加以下代码:

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        actionBarDrawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        actionBarDrawerToggle.onConfigurationChanged(newConfig);
    }
编辑:

在BaseActivity的
onCreate
功能中启用主页按钮:

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
xml中缺少工具栏布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/rootLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#eeeeee">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.AppBarLayout>

        <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/content_frame"/>

        </LinearLayout>

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>

希望这有帮助

对不起,我的英语太差了。

试试这边

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">


<include
    layout="@layout/app_bar_toolbar"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

在app_bar_toolbar.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <RelativeLayout
            android:id="@+id/relative_tool_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize">


            </android.support.v7.widget.Toolbar>
        </RelativeLayout>
    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>

在content_main.xml中,使用这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.esec_0052.fingertips.FingerTipMainActivity"
    tools:showIn="@layout/app_bar_finger_tip_main">


    <FrameLayout
        android:id="@+id/frame_parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>


在我的谷歌搜索中尝试了这一点,运气不好,我害怕,force以空指针关闭。我使用的是一个NoActionBar主题,所以这可能就是原因。。。java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v7.app.ActionBar.setHomeButtonEnabled(boolean)”。两行代码必须位于setSupportActionBar(工具栏)之后,这是你的案子吗?谢谢你指出我的白痴。我丢失了我的工具栏xml!有时它隐藏在显而易见的地方!谢谢你的帮助!