2017-07-06 52 views
0

超新的编码。我遵循了关于创建制表符和片段的教程。我的应用程序现在在工具栏上有3个选项卡,点击后它们将更改为各自的布局。我想现在添加一个按钮,将我带到这些布局而不是使用工具栏,所以我可以将它移动并放置在我想要的位置。使用按钮更改选项卡视图

这是我在我的MainActivity

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

    mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager()); 

    //Set up the ViewPager with the sections adapter. 
    mViewPager = (ViewPager) findViewById(R.id.container); 
    setupViewPager(mViewPager); 

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

private void setupViewPager(ViewPager viewPager) { 
    SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Main2Activity(), "TAB1"); 
    adapter.addFragment(new Main3Activity(), "TAB2"); 
    adapter.addFragment(new Main4Activity(), "TAB3"); 
    viewPager.setAdapter(adapter); 
} 

于是我加入这个代码的按钮。在我的XML中,我将按钮放在容器ID上方,以便始终可以看到它。理想情况下,我有3个按钮,每个按钮放入容器ID Main2Activity,Main3Activity和Main4Activity。这里只是一个按钮,因为我试图弄清楚如何让视图发生变化。

public void onClickBtn1(View v){ 
    FragmentManager fm = getSupportFragmentManager(); 
    android.support.v4.app.FragmentTransaction ft = fm.beginTransaction(); 

    ft.replace(R.id.container, new Main2Activity()); 
    ft.commit(); 
} 

这也是我的SectionsPageAdapter页面,如果它有帮助。

public class SectionsPageAdapter extends FragmentPagerAdapter { 

private final List<Fragment> mFragmentList = new ArrayList<>(); 
private final List<String> mFragmentTitleList = new ArrayList<>(); 

public void addFragment(Fragment fragment, String title) { 
    mFragmentList.add(fragment); 
    mFragmentTitleList.add(title); 
} 

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

@Override 
public CharSequence getPageTitle(int position) { 
    return mFragmentTitleList.get(position); 
} 

@Override 
public Fragment getItem(int position) { 
    return mFragmentList.get(position); 
} 

@Override 
public int getCount() { 
    return mFragmentList.size(); 
} 
} 

在此先感谢!

回答

1

呼叫ViewPager#setCurrentItem在上点击进入该项目的索引viewpager的适配器的列表/数组:

public void onClickBtn1(View v){ 
    int gotoIndex = 0; 
    mViewPager.setCurrentItem(gotoIndex, /*smoothscrolling*/ true); 
} 
相关问题