从ViewPager片段导航到Android中的片段

时间:2015-05-20 09:17:17

标签: android android-fragments android-viewpager

我想制作3个ViewPager,每组3页。每个页面都有一个由pagerAdapter控制的片段。在每个片段中,我想放置2个按钮,可以将您带到另一个ViewPager集。 所以在片段里面我将实现onClickListener和Click方法

@Override
public void onClick(View v)
{
    switch(v.getId()) {
        case R.id.imageButtonChoice1:

            break;

        case R.id.imageButtonChoice2:

            break;
    }
}

那么我必须关闭控制3个ViewPagerAdapters并重新加载它的整个活动吗? 要么 我应该将这些导航按钮放在活动中而不是片段中吗? 如何通过单击图像按钮可以转到另一个viewpager集?

1 个答案:

答案 0 :(得分:0)

每个按钮都可以启动一个具有一组不同ViewPager的活动。 在活动中,您需要实现ViewPager。

这是示例(在此示例中,对象在Fragment之间传递):

    public class SectionsPagerAdapter extends FragmentPagerAdapter {
    Instalacion instalacion;
    ArrayList<Actividad> arrayListActividades;

    public SectionsPagerAdapter(FragmentManager fm, Instalacion instalacion, ArrayList<Actividad> arrayListActividades) {
        super(fm);
        this.instalacion = instalacion;
        this.arrayListActividades = arrayListActividades;

    }

    @Override  
    public Fragment getItem(int position) {  
        Fragment fragment = new Fragment();  

        switch (position) {  
        case 0:  

            fragment = new InfoInstalacionFragment1();
            Bundle bundle = new Bundle();
            bundle.putSerializable("key", (Instalacion)instalacion);
            fragment.setArguments(bundle);
            return fragment;  
        case 1: 
            fragment = new InfoInstalacionFragment2();
            Bundle bundle2 = new Bundle();
            bundle2.putSerializable("key", (Instalacion) instalacion);
            fragment.setArguments(bundle2);
            return  fragment;
        case 2:  
            fragment = new InfoInstalacionFragment3();
            Bundle bundle3 = new Bundle();
            bundle3.putSerializable("key", (ArrayList)arrayListActividades);
            fragment.setArguments(bundle3);
            return fragment;  


            return fragment; 

        default:  
            break;  
        }  
        return fragment;
    }


    public int getCount() {
        // Show 3 total pages.
        return 3;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        Fragment fragment = new Fragment();
        switch (position) {
        case 0:
            return getString(R.string.title_section1).toUpperCase(l);
        case 1:
            return getString(R.string.title_section2).toUpperCase(l);
        case 2:
            return getString(R.string.title_section3).toUpperCase(l);

        }


        return null;
    }

onCreate方法:

            mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager(), instalacion, arrayListActividades);

        // Instanciamos nuestro ViewPager
        mViewPager = (ViewPager) findViewById(R.id.pager);
        //habilitar el listenner
        mViewPager.setOnPageChangeListener(this);
        // Establecemos el Adapter
        mViewPager.setAdapter(mSectionsPagerAdapter)