只是测试的代码,没有进行数据的下载,数据都是自己加的,只用于简单的测试。
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>