美文网首页
点击侧滑菜单选项切换fragment

点击侧滑菜单选项切换fragment

作者: 初昇陌 | 来源:发表于2019-03-18 20:35 被阅读0次

    1.布局

    外层是DrawerLayout 
    
    <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:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/dl"
        tools:context=".MainActivity">
    
        <LinearLayout
            android:id="@+id/ll"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:minHeight="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"></android.support.v7.widget.Toolbar>
    
            <FrameLayout
                android:id="@+id/fg"
                android:layout_width="match_parent"
                android:layout_height="match_parent"></FrameLayout>
        </LinearLayout>
    
    
        <android.support.design.widget.NavigationView
            android:id="@+id/nv"
            android:layout_gravity="left"
            app:headerLayout="@layout/activity_header"
            app:menu="@menu/nv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></android.support.design.widget.NavigationView>
    
    </android.support.v4.widget.DrawerLayout>
    

    2.主要中

    @Override
        protected void initView() {
            mToolbar.setTitle("首页");
            manager = getSupportFragmentManager();
            setSupportActionBar(mToolbar);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDl, mToolbar, R.string.about, R.string.about);
            mDl.addDrawerListener(toggle);
            toggle.syncState();
    
    
            initFragment();
            addFragment();
        }
    
        private void addFragment() {
            FragmentTransaction transaction = manager.beginTransaction();
            transaction.add(R.id.fg, list.get(0));
            transaction.commit();
        }
    //自己创建fragmt
        private void initFragment() {
            list = new ArrayList<>();
            list.add(new HomeFragment());
            list.add(new CollectionFragment());
            list.add(new SettingFragment());
            list.add(new AboutFragment());
        }
    
        @Override
        protected void initListener() {
            mNv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                @Override
                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                    switch (menuItem.getItemId()) {
                        case R.id.wan:
                            switchFragment(HOME);
                            break;
                        case R.id.collection:
                            switchFragment(COLLECTION);
                            break;
                        case R.id.setting:
                            switchFragment(SETTING);
                            break;
                        case R.id.about:
                            switchFragment(ABOUT);
                            break;
                    }
                    mDl.closeDrawer(Gravity.LEFT);
                    return false;
                }
            });
        }
    
    
        int HOME = 0;
        int COLLECTION = 1;
        int SETTING = 2;
        int ABOUT = 3;
        int LASTPOSITION = 0;
    
    
        private void switchFragment(int position) {
            FragmentTransaction transaction = manager.beginTransaction();
            Fragment fragment = list.get(position);
            if (!fragment.isAdded()) {
                transaction.add(R.id.fg, fragment);
            }
            Fragment lastfragment = list.get(LASTPOSITION);
            transaction.hide(lastfragment);
            transaction.show(fragment);
            transaction.commit();
            LASTPOSITION = position;
        }
    

    相关文章

      网友评论

          本文标题:点击侧滑菜单选项切换fragment

          本文链接:https://www.haomeiwen.com/subject/pbfimqtx.html