How To Add Tabbed Activity Into Navigation Drawer Activity?

后端 未结 1 790
攒了一身酷
攒了一身酷 2021-02-03 14:54

I heard that we can not run Android activity inside fragment.

I started a new project with Navigation Drawer Activity chosen. then, I need tabbed activity

相关标签:
1条回答
  • 2021-02-03 15:09

    In the navigation drawer activtiy change your layout like this :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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:fitsSystemWindows="true"
    android:orientation="vertical"
    tools:context="in.net.spectrum.citytour.MainActivity">
    
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        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="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
        //
        //
        // Tab layout to show tabs
        //
        //
        <android.support.design.widget.TabLayout
            android:background="@color/colorPrimary"
            app:tabSelectedTextColor="#ffffff"
            app:tabIndicatorColor="#FFFFFF"
            app:tabIndicatorHeight="3dp"
            app:tabTextColor="#FFFFFF"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabMode="fixed"
            app:tabGravity="fill"
            android:id="@+id/tbl_pages"/>
    
    </android.support.design.widget.AppBarLayout>
    <!-- <include layout="@layout/content_main" />-->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        //
        //
        //ViewPager to show tab's fragments
        //
        //
    
        <android.support.v4.view.ViewPager
            android:id="@+id/vp_pages"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v4.view.ViewPager>
    
    
        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="@dimen/fab_margin"
            app:srcCompat="@android:drawable/ic_dialog_email" />
    </FrameLayout>
    
    
    </LinearLayout>
    

    Now in your Activity Java code inside onCreate() add these lines :

        @Override
        protected void onCreate(Bundle savedInstanceState) {
               .
               .
               .
               .
    
        ViewPager vp_pages= (ViewPager) findViewById(R.id.vp_pages);
        PagerAdapter pagerAdapter=new FragmentAdapter(getSupportFragmentManager());
        vp_pages.setAdapter(pagerAdapter);
    
        TabLayout tbl_pages= (TabLayout) findViewById(R.id.tbl_pages);
        tbl_pages.setupWithViewPager(vp_pages);
    
        }
    

    Now outside onCreate() method create the fragment adapter :

    class FragmentAdapter extends FragmentPagerAdapter {
    
        public FragmentAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    return new YourFragment1();
                case 1:
                    return new YourFragment2();
                case 2:
                    return new YourFragment3();
            }
            return null;
        }
    
        @Override
        public int getCount() {
            return 3;
        }
    
    
        @Override
        public CharSequence getPageTitle(int position) {
            switch (position){
                //
                //Your tab titles
                //
                case 0:return "Profile";
                case 1:return "Search";
                case 2: return "Contacts";
                default:return null;
            }
        }
    }
    

    Output :

    Cheers, Happy coding.

    0 讨论(0)
提交回复
热议问题