【问题标题】:How to combine drawer navigation with tabbed activity如何将抽屉式导航与选项卡式活动结合起来
【发布时间】:2018-01-01 14:45:35
【问题描述】:

我正在尝试将我的抽屉式导航与其中的选项卡式活动结合起来。但是我对java有问题。我已经尝试关注这个答案How to impliment navigation drawer and swipe tab in same activity in android studio? 但我得到了错误。它说

com.dimas.adttest.MainHome 不是封闭类

我已经从我的 MainHome.java(Tabbed Activity) 中放了这个

mSectionsPageAdapter = new MainHome.SectionsPagerAdapter(getSupportFragmentManager());

            mViewPager = (ViewPager) findViewById(R.id.container);
            mViewPager.setAdapter(mSectionsPagerAdapter);

            TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
            tabLayout.setupWithViewPager(mViewPager);

进入我的 MainActivity。就这样吧 MainActivity.java(抽屉导航)

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    private ViewPager mViewPager;

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

        mSectionsPageAdapter = new MainHome.SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);

        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);


        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }
}

MainHome.java(选项卡式活动)

public class MainHome extends AppCompatActivity {

    /**
     * The {@link android.support.v4.view.PagerAdapter} that will provide
     * fragments for each of the sections. We use a
     * {@link FragmentPagerAdapter} derivative, which will keep every
     * loaded fragment in memory. If this becomes too memory intensive, it
     * may be best to switch to a
     * {@link android.support.v4.app.FragmentStatePagerAdapter}.
     */
    private SectionsPagerAdapter mSectionsPagerAdapter;

    /**
     * The {@link ViewPager} that will host the section contents.
     */
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_home);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);

        mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

    }
}

【问题讨论】:

  • 你到底想做什么?? main Activity 和 mainhome 是同一个activity吧??我的意思是主要活动本身就是选项卡式活动......?
  • 我想将抽屉式导航与选项卡式活动结合起来。抽屉导航是 mainactivity.java,mainhome.java 是选项卡式活动
  • 我想合并它,以便在我的选项卡式活动中有导航
  • 显示 mainhome.java
  • 我已经更新到问题

标签: android


【解决方案1】:

使用new SectionsPagerAdapter(getSupportFragmentManager()); 而不是new MainHome.SectionsPagerAdapter(getSupportFragmemtManager()); .. 只需在选项卡式活动本身中实现抽屉布局或在mainActivity 中包含选项卡式viewpager,无需创建MainHome.java

【讨论】:

  • 你的意思是这样的改变? mSectionsPageAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
  • 是的,只需在主 Activity 中执行此操作即可。无需创建 MainHome.java
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2020-06-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2014-01-05
相关资源
最近更新 更多