简体   繁体   English

缺少操作栏标题和导航抽屉图标

[英]Action Bar title and navigation drawer icon missing

In MainPage , it has NavigationDrawer and BottomNavigationBar . MainPage ,它具有NavigationDrawerBottomNavigationBar When I clicked Home , the navigation drawer icon and action bar title missing. 当我单击Home ,导航抽屉图标和操作栏标题丢失。

在此处输入图片说明

MainPage 主页

public class MainPage extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {


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

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
        navigation.setSelectedItemId(R.id.navigation_home);
    }


    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            Fragment fragment;
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    fragment = new HomePage();
                    loadFragment(fragment);
                    return true;
                case R.id.navigation_dashboard:
                    return true;
                case R.id.navigation_notifications:
                    return true;
            }
            return false;
        }
    };

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the main; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_camera) {
            // Handle the camera action
        } else if (id == R.id.nav_gallery) {

        } else if (id == R.id.nav_slideshow) {

        } else if (id == R.id.nav_manage) {

        } else if (id == R.id.nav_share) {

        } else if (id == R.id.nav_send) {

        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }

    private void loadFragment(Fragment fragment) {
        // load fragment
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.rl, fragment);
        transaction.addToBackStack(null);
        transaction.commit();
    }
}

HomePage 主页

public class HomePage extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.app_bar_main, container, false);

        RecyclerView mRecyclerView = view.findViewById(R.id.recycleView);

        GridLayoutManager mGridLayoutManager = new GridLayoutManager(getActivity(), 2);
        mRecyclerView.setLayoutManager(mGridLayoutManager);

        mRecyclerView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

        List <Book> bookList= new ArrayList<>();
        Book book = new Book();
        book = new Book("Introduction to Java Programming", 15.00, "4.5", Uri.parse("android.resource://com.example.seng.sechandapp/drawable/book").toString());
        bookList.add(book);
        book = new Book("Java", 15.00, "4.5", Uri.parse("android.resource://com.example.seng.sechandapp/drawable/book").toString());
        bookList.add(book);
        HomePageAdapter homePageAdapter = new HomePageAdapter(getActivity(), bookList);
        mRecyclerView.setAdapter(homePageAdapter);
        return view;
    }
}

app_bar_main app_bar_main

<?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"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.seng.sechandapp.MainPage">

    <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
                  app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:orientation="vertical">

        <android.support.design.widget.AppBarLayout
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/blueviolet"
                app:popupTheme="@style/AppTheme.PopupOverlay"/>

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

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

    </LinearLayout>


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

home_page 主页

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             android:orientation="vertical" android:layout_width="match_parent"
             android:layout_height="match_parent">
    <android.support.v7.widget.RecyclerView android:layout_width="match_parent"
                                            android:layout_height="match_parent"
                                            android:id="@+id/recycleView">
    </android.support.v7.widget.RecyclerView>
</FrameLayout>

Try this 尝试这个

Make below Changes in you code 在代码中进行以下更改

First Change 第一次改变

Use this in your HomePage Fragment 在您的主页片段中使用它

 View view = inflater.inflate(R.layout.home_page, container, false);

instead of 代替

 View view = inflater.inflate(R.layout.app_bar_main, container, false);

Second Change 第二次改变

Now in your home_page add android:layout_marginTop="?actionBarSize" in your FrameLayout 现在,在您home_page添加android:layout_marginTop="?actionBarSize"在你FrameLayout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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_marginTop="?actionBarSize"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycleView"
        android:layout_width="match_parent"


        android:layout_height="match_parent"/>
</FrameLayout>

Some Other suggestion 其他建议

Use implementation instead of compile in your build.gradle because 使用implementation而不是在build.gradle进行compile ,因为

  • Configuration compile is obsolete and has been replaced with implementation . 配置compile已过时,并已由implementation替换。 It will be removed at the end of 2018 它将在2018年底删除

You are inflating app_bar_main.xml instead of home_page.xml inside the Fragment . 您正在给Fragment内的app_bar_main.xml而不是home_page.xml充气。 Replace View view = inflater.inflate(R.layout.app_bar_main, container, false); 替换View view = inflater.inflate(R.layout.app_bar_main, container, false); with View view = inflater.inflate(R.layout.home_page, container, false); View view = inflater.inflate(R.layout.home_page, container, false); . And where is the view with ID R.id.rl ? ID为R.id.rl的视图在R.id.rl

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM