Android:替换标签中的碎片

Android:替换标签中的碎片,android,android-fragments,Android,Android Fragments,所以我试图在一个屏幕上,在不同的选项卡上显示三个片段,在其中一个选项卡上,让它们切换为另一个片段,但我不知道如何才能做到这一点。我已经研究过其他类似的问题,但是,我似乎无法让它们发挥作用。所以如果有人能帮我弄清楚,那就太好了 我的禁忌是这个 public class Tabsadapter extends FragmentStatePagerAdapter { private int TOTAL_TABS = 3; public Tabsadapter(FragmentMan

所以我试图在一个屏幕上,在不同的选项卡上显示三个片段,在其中一个选项卡上,让它们切换为另一个片段,但我不知道如何才能做到这一点。我已经研究过其他类似的问题,但是,我似乎无法让它们发挥作用。所以如果有人能帮我弄清楚,那就太好了

我的禁忌是这个

public class Tabsadapter extends FragmentStatePagerAdapter {

    private int TOTAL_TABS = 3;

    public Tabsadapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int index) {
        switch (index) {
            case 0:
                return new fragment1();

            case 1:
                return new fragment2();

            case 2:
                return new fragment3();

        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
    return TOTAL_TABS;
    }

}
我的主要观点是:

public class main extends ActionBarActivity implements android.support.v7.app.ActionBar.TabListener {

    private ViewPager tabsviewPager;
    private ActionBar mActionBar;
    private Tabsadapter mTabsAdapter;

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

        tabsviewPager = (ViewPager) findViewById(R.id.tabspager);

        mTabsAdapter = new Tabsadapter(getSupportFragmentManager());

        tabsviewPager.setAdapter(mTabsAdapter);

        getSupportActionBar().setHomeButtonEnabled(false);
          getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        Tab tab1 = getSupportActionBar().newTab().setText("Month").setTabListener(this);
        Tab tab2 = getSupportActionBar().newTab().setText("Week").setTabListener(this);
        Tab tab3 = getSupportActionBar().newTab().setText("Day").setTabListener(this);

        getSupportActionBar().addTab(tab2);
        getSupportActionBar().addTab(tab2);
        getSupportActionBar().addTab(tab3);

        tabsviewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // TODO Auto-generated method stub
                getSupportActionBar().setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

    @Override
    public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
    }

    @Override
    public void onTabSelected(Tab selectedtab, FragmentTransaction arg1) {
        tabsviewPager.setCurrentItem(selectedtab.getPosition()); //update tab position on tap
    }

    @Override
    public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
    }
}

任何人能提供的任何帮助都将不胜感激。谢谢

在Android Studio上,您可以为此自动创建代码:

  • 右键单击项目的文件夹,选择新建->选项卡式活动
  • 选择导航样式。(如果我能很好地理解你)
  • 如果需要,请更改其他字段
  • 单击“完成”
您现在有一个全新的选项卡式活动可供使用:)

如果您想了解生成的代码的工作原理,可以阅读它


如果需要帮助,请问我。

谢谢!我不知道这个特性,这段代码好多了。但是我怎么能替换一个片段呢,所以当我在应用程序中,点击一个按钮时,片段会用另一个替换自己?我真的不明白你想做什么。你能解释一下吗?我有一个包含两个选项卡的选项卡式活动,其中一个选项卡显示一个包含按钮的片段,我想当按下该按钮时,当前片段将被替换为另一个片段,我不确定如何执行replacingIt是可能的,但并不容易。我不鼓励你这么做,因为它并没有真正遵循安卓的能量学准则。此外,即使您成功地做到了这一点,如果用户切换选项卡并在第一个选项卡中返回,片段将自动重新启动,并且用户将不再处于单击按钮时启动的片段中。他需要再点击一次。这是一个糟糕的应用程序设计。当用户点击按钮时,你就不能打开一个新的活动吗?这就是我正在做的,我只是觉得这样做会让应用程序看起来更干净,但是你说的有道理,我想我会坚持创建一个新的活动。谢谢