实现fragment和radioButton 的联动操作:

只是测试的代码,没有进行数据的下载,数据都是自己加的,只用于简单的测试。
Fragment1.java

package com.qf.demo04;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


/**
 * Created by Administrator on 2016/2/19.
 */
public class Fragment1 extends Fragment{
    private TextView textView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment01,null);
        textView = (TextView) view.findViewById(R.id.textView);

        Bundle arguments = getArguments();
        String msg = arguments.getString("msg","null");//bundle来接收传过来的值,null:表示传值失败返回的默认值
        textView.setText(msg);

        return view;
    }
}

MyAdapter .java

package com.qf.demo04;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

/**
 * Created by Administrator on 2016/2/19.
 */
public class MyAdapter extends FragmentPagerAdapter{
    private List<Fragment> pager;

    public MyAdapter(FragmentManager fm, List<Fragment> pager) {
        super(fm);
        this.pager = pager;
    }

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

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

MainActivity.java

package com.qf.demo04;

import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import java.util.ArrayList;
import java.util.List;

/**
 * 实现fragment和radioButton 的联动操作
 * 在MainActivity中添加碎片,实现与底部按钮的联动
 */
public class MainActivity extends ActionBarActivity implements ViewPager.OnPageChangeListener,RadioGroup.OnCheckedChangeListener{
    private ViewPager viewPager;
    private RadioGroup radioGroup;
    private List<Fragment> pager;
    private MyAdapter adapter;
    private RadioButton rb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager = (ViewPager) findViewById(R.id.viewPager);
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        rb = (RadioButton) findViewById(R.id.rb);

        rb.setChecked(true);//设置radioButton的默认位置

        initPager();//初始化viewPager中数据
        adapter = new MyAdapter(getSupportFragmentManager(),pager);
        viewPager.setAdapter(adapter);
        //绑定viewPage 的监听器
        viewPager.setOnPageChangeListener(this);

        radioGroup.setOnCheckedChangeListener(this);
    }

    private void initPager(){
        pager = new ArrayList<Fragment>();
        Fragment1 fragment = null;
        Bundle bundle = null;

        for (int i = 0; i < 50; i++) {
            fragment = new Fragment1();
            bundle = new Bundle();
            bundle.putString("msg","data"+i);//fragment中的传值,使用bundle对象来实现
            fragment.setArguments(bundle);
            pager.add(fragment);
        }
    }

    /**
     * viewPager的监听器
     * @param position
     * @param positionOffset
     * @param positionOffsetPixels
     */

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        //获取到radioGroup对应位置的子控家
        RadioButton rb= (RadioButton)radioGroup.getChildAt(position);
        rb.setChecked(true);//?????????这里会出现问题
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    //RadioGroup的监听事件
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        int count = group.getChildCount();//RadioGroup子控件的个数
        for (int i = 0; i < count; i++) {
            RadioButton button = (RadioButton)group.getChildAt(i);
            if(button.isChecked()){//说明这个按钮就是被选中的按钮,当前的位置就是我们需要显示的viewPager的页面的位置
                viewPager.setCurrentItem(i);
            }
        }
    }
}

值得说的一点是:在Fragment中的传值与Activity中的传值是类似的,都是创建Bundle对象来实现。

//下面是布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.qf.demo04.MainActivity">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/rb"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="左手"/>
        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="右手"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="一个"/>

        <RadioButton
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="慢动作"/>
    </RadioGroup>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="fragment01"/>
</LinearLayout>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值