Android 更改片段时更改活动菜单

Android 更改片段时更改活动菜单,android,Android,我有一个main活动,有三个选项卡,在我的android应用程序中使用ViewPager和pagerslidingtastrip库 问题是,当片段更改(即选项卡更改)时,如何更改MainActivity的菜单 每个选项卡都有不同的菜单。如何执行此操作?在打开菜单资源之前,应在ViewPager中使用的每个片段中覆盖创建选项菜单,并使用menu.clear() 您可以检查如何在本文档中使用此功能 尝试“在运行时更改菜单项”一章。在我的例子中,我使用了两个片段……您只需要添加一个片段 碎片 它连

我有一个
main活动
,有三个选项卡,在我的android应用程序中使用
ViewPager
和pagerslidingtastrip库

问题是,当片段更改(即选项卡更改)时,如何更改
MainActivity
的菜单


每个选项卡都有不同的菜单。如何执行此操作?

在打开菜单资源之前,应在ViewPager中使用的每个片段中覆盖创建选项菜单,并使用menu.clear()

您可以检查如何在本文档中使用此功能


尝试“在运行时更改菜单项”一章。

在我的例子中,我使用了两个片段……您只需要添加一个片段

  • 碎片

  • 它连接到布局登录

  • 片段基本相同,只是布局不同

    。。。 CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){

    它连接到布局寄存器

  • 然后我们有了TabsPagerAdapter

    public class TabsPagerAdapter extends FragmentPagerAdapter {
    
        public TabsPagerAdapter(FragmentManager fm)
        {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int index) {
    
            switch (index) {
            case 0:
                // 1 fragment activity
                return new LoginFragment();
            case 1:
                // 2 fragment activity
                return new RegisterFragment();
    
            }
    
            return null;
        }
    
        @Override
        public int getCount() {
            // get item count - equal to number of tabs
            return 2;
        }
    
    }
    
    你在这里所说的一切

        public class MainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener,ActionBar.TabListener {
    
        private ViewPager mViewPager;
        private TabsPagerAdapter mAdapter;
        private TabHost mTabHost;
        private String[] tabs = { "1.Fragment", "2.Fragment"};
    
        private TabHost.TabContentFactory mTabFactory = new TabHost.TabContentFactory() {
            @Override
            public View createTabContent(String tag) {
                View v = new View(MainActivity.this);
                v.setMinimumHeight(0);
                v.setMinimumWidth(0);
                return v;
            }
        };
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.view_bottomtabs);
            mViewPager = (ViewPager) findViewById(R.id.viewPager);
            mViewPager.setOnPageChangeListener(this);
    
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
            mViewPager.setAdapter(mAdapter);
            mTabHost = (TabHost) findViewById(android.R.id.tabhost);
            mTabHost.setup();
            mTabHost.setOnTabChangedListener(this);
            for (String tab_name : tabs){
                TabHost.TabSpec spec =mTabHost.newTabSpec(tab_name);
                spec.setIndicator(tab_name);
                spec.setContent(mTabFactory);
                mTabHost.addTab(spec);
            }
    
        }
    
    
    
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
            mTabHost.setCurrentTab(position);
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
    
        }
    
        @Override
        public void onTabChanged(String tabId) {
            int position = -1;
            if (tabId.contains("1.Fragment")) {
                position = 0;
            } else if (tabId.contains("2.Fragment")) {
                position = 1;
            }
            mViewPager.setCurrentItem(position);
        }
    
        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
        }
    
        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            // on tab selected
            // show respected fragment view
            mViewPager.setCurrentItem(tab.getPosition());
        }
    
        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        }
    
    
    }
    

    我希望这有助于

    在此处共享您的代码,以更好地帮助您
    public class TabsPagerAdapter extends FragmentPagerAdapter {
    
        public TabsPagerAdapter(FragmentManager fm)
        {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int index) {
    
            switch (index) {
            case 0:
                // 1 fragment activity
                return new LoginFragment();
            case 1:
                // 2 fragment activity
                return new RegisterFragment();
    
            }
    
            return null;
        }
    
        @Override
        public int getCount() {
            // get item count - equal to number of tabs
            return 2;
        }
    
    }
    
        public class MainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener,ActionBar.TabListener {
    
        private ViewPager mViewPager;
        private TabsPagerAdapter mAdapter;
        private TabHost mTabHost;
        private String[] tabs = { "1.Fragment", "2.Fragment"};
    
        private TabHost.TabContentFactory mTabFactory = new TabHost.TabContentFactory() {
            @Override
            public View createTabContent(String tag) {
                View v = new View(MainActivity.this);
                v.setMinimumHeight(0);
                v.setMinimumWidth(0);
                return v;
            }
        };
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.view_bottomtabs);
            mViewPager = (ViewPager) findViewById(R.id.viewPager);
            mViewPager.setOnPageChangeListener(this);
    
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
            mViewPager.setAdapter(mAdapter);
            mTabHost = (TabHost) findViewById(android.R.id.tabhost);
            mTabHost.setup();
            mTabHost.setOnTabChangedListener(this);
            for (String tab_name : tabs){
                TabHost.TabSpec spec =mTabHost.newTabSpec(tab_name);
                spec.setIndicator(tab_name);
                spec.setContent(mTabFactory);
                mTabHost.addTab(spec);
            }
    
        }
    
    
    
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
            mTabHost.setCurrentTab(position);
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
    
        }
    
        @Override
        public void onTabChanged(String tabId) {
            int position = -1;
            if (tabId.contains("1.Fragment")) {
                position = 0;
            } else if (tabId.contains("2.Fragment")) {
                position = 1;
            }
            mViewPager.setCurrentItem(position);
        }
    
        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
        }
    
        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            // on tab selected
            // show respected fragment view
            mViewPager.setCurrentItem(tab.getPosition());
        }
    
        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        }
    
    
    }