viewpager和fragment的联动

本文介绍了一种在Android应用中实现ViewPager与多个Fragment联动的方法。通过创建自定义适配器MyFragmentAdapter,实现了ViewPager与四个Fragment(首页、分类、购物车、我的)之间的平滑切换。同时,每个RadioButton对应一个Fragment,点击时会触发相应的ViewPager页面切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主类
public class MainActivity extends FragmentActivity {
   private ViewPager viewPager;
    private RadioGroup rg;
    private RadioButton shou,fen,shop,user;
    private List<Fragment> list;
    private ShouYe one;
    private FenLei two;
    private Shop three;
    private User four;
    private MyFragmentAdapter myFragmentAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPager = (ViewPager) findViewById(R.id.viewpager);
        shou = (RadioButton) findViewById(R.id.btn_one);
        fen = (RadioButton) findViewById(R.id.btn_two);
        shop = (RadioButton) findViewById(R.id.btn_three);
        user = (RadioButton) findViewById(R.id.btn_four);
        rg = (RadioGroup) findViewById(R.id.rg_menu);

        list = new ArrayList<Fragment>();
        one = new ShouYe();
        two = new FenLei();
        three = new Shop();
        four = new User();
        list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);

        FragmentManager fm = getSupportFragmentManager();
        //初始化自定义适配器
        myFragmentAdapter =  new MyFragmentAdapter(fm,list);
        viewPager.setAdapter(myFragmentAdapter);
        //viewPager的滑动
        viewPager.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                switch (view.getId()){
                    case R.id.btn_one:
                        //给ViewPager设置当前布局
                        viewPager.setCurrentItem(0);
                    case R.id.btn_two:
                        //给ViewPager设置当前布局
                        viewPager.setCurrentItem(1);
                    case R.id.btn_three:
                        //给ViewPager设置当前布局
                        viewPager.setCurrentItem(2);
                    case R.id.btn_four:
                        //给ViewPager设置当前布局
                        viewPager.setCurrentItem(3);
                }
            }
        });
        //RadioButton的点击事件实现联动
     shou.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view) {
             viewPager.setCurrentItem(0);
         }
     });
        fen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewPager.setCurrentItem(1);
            }
        });
        shop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewPager.setCurrentItem(2);
            }
        });
        user.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewPager.setCurrentItem(3);
            }
        });
    }

}
适配器

public class MyFragmentAdapter extends FragmentPagerAdapter {

    private List<Fragment> list;

    public MyFragmentAdapter(FragmentManager fm,List<Fragment> list) {
        super(fm);

        this.list = list;
    }

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

    @Override
    public int getCount() {
        return list.size();
    }
}
主xml文件
<android.support.v4.view.ViewPager
    android:id="@+id/viewpager"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="8">
</android.support.v4.view.ViewPager>
    <!-- 指示标签 -->
    <LinearLayout
        android:id="@+id/cursorarea"
        android:layout_width="fill_parent"
        android:background="#CDCDCD"
        android:orientation="horizontal"
        android:layout_height="2dp">
        <ImageView
            android:id="@+id/cursor_btn"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
        </ImageView>
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/bottomlinear"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#DCDCDC">  -->
        <RadioGroup
            android:id="@+id/rg_menu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal"
            android:padding="5dp"
            >


            <RadioButton
                android:id="@+id/btn_one"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:padding="-5dp"
                android:textSize="14sp"
                android:button="@null"
                android:gravity="center"
                android:text="首页"
                android:checked="true"
                android:drawableTop="@drawable/firstbtn"
                />

            <RadioButton
                android:id="@+id/btn_two"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="14sp"
                android:button="@null"
                android:gravity="center"
                android:text="分类"
                android:checked="true"
                android:drawableTop="@drawable/sceondbtn"
                />

            <RadioButton
                android:id="@+id/btn_three"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="14sp"
                android:button="@null"
                android:gravity="center"
                android:drawableTop="@drawable/threebtn"
                android:checked="true"
                android:text="购物车"
                />

            <RadioButton
                android:id="@+id/btn_four"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:textSize="14sp"
                android:button="@null"
                android:gravity="center"
                android:checked="true"
                android:drawableTop="@drawable/fourbtn"
                android:text="我的"
                />
        </RadioGroup>
    </RelativeLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值