如何在帧布局中实现嵌套子布局?使用viewpager滑动事件,在MainFragment中嵌套子布局ChildFragment实现滑动效果
在MainActivity中
public class MainActivity extends AppCompatActivity {
//定义变量
private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();
private RadioGroup group;
private FragmentManager supportFragmentManager;
String TAG = "wzq";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化组件
group = (RadioGroup) findViewById(R.id.group);
initFragment();
supportFragmentManager = getSupportFragmentManager();
supportFragmentManager.beginTransaction().add(R.id.fl_main, fragmentList.get(0)).commit();
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, @IdRes int i) {
switch (i) {
case R.id.but1:
supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(0)).commit();
break;
case R.id.but2:
supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(1)).commit();
break;
case R.id.but3:
supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(2)).commit();
break;
case R.id.but4:
supportFragmentManager.beginTransaction().replace(R.id.fl_main,fragmentList.get(3)).commit();
break;
}
}
});
}
private void initFragment() {
MainFragment1 mainFragment1 = new MainFragment1();
MainFragment2 mainFragment2 = new MainFragment2();
MainFragment3 mainFragment3 = new MainFragment3();
MainFragment4 mainFragment4 = new MainFragment4();
fragmentList.add(mainFragment1);
fragmentList.add(mainFragment2);
fragmentList.add(mainFragment3);
fragmentList.add(mainFragment4);
}
}
在定义的Mainfragment1,2,3,4 中继承V4包下的Fragment
private ViewPager viewpager;
private ArrayList<Fragment> fragmentList = new ArrayList<Fragment>();
//只写加载布局和找到控件
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_a, container, false);
viewpager = view.findViewById(R.id.viewpager);
return view;
}
/**
* 写fragment的逻辑;
* @param view
* @param savedInstanceState
*/
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initFragment();
//fragment中嵌套子fragment要用getChildFragmentManager()
viewpager.setAdapter(new MPagerAdapter(getChildFragmentManager()));
}
private void initFragment() {
ChildFragment1 childFragment1 = new ChildFragment1();
ChildFragment2 childFragment2 = new ChildFragment2();
fragmentList.add(childFragment1);
fragmentList.add(childFragment2);
}
private class MPagerAdapter extends FragmentPagerAdapter {
public MPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}