效果图:

图1:

图2:

图3:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"><LinearLayoutandroid:id="@+id/ly_main"android:layout_width="match_parent"android:layout_height="0dp"android:orientation="vertical"android:layout_weight="9"></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"><RadioGroupandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="#03b8ff"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><RadioButtonandroid:id="@+id/rb_room"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:text="选择房间"android:button="@null"android:textSize="20dp"android:gravity="center"android:textColor="#ed0909"/><RadioButtonandroid:id="@+id/rb_dining"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:text="餐厅"android:button="@null"android:textSize="20dp"android:gravity="center"android:textColor="#fff"/><RadioButtonandroid:id="@+id/rb_kursaal"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:text="游乐场"android:button="@null"android:textSize="20dp"android:gravity="center"android:textColor="#fff"/></LinearLayout></RadioGroup></LinearLayout></LinearLayout>

MainActivity.java:


public class MainActivity extends AppCompatActivity implements View.OnClickListener {private RadioButton rbMessage,rbSay,rbLinkman;private FragmentManager manager;private FragmentTransaction transaction;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();     //  初始化控件//  创建布局管理器对象manager = getSupportFragmentManager();transaction = manager.beginTransaction();   // 获得事务对象,并启动事务transaction.add(R.id.ly_main,new RoomFragment());    //  默认打开联系人界面,第一个参数是这个 Fragment 要依赖的布局,第二个是对应的 Fragmenttransaction.commit();       //  提交事务}private void initView() {rbMessage = findViewById(R.id.rb_room);rbLinkman = findViewById(R.id.rb_dining);rbSay = findViewById(R.id.rb_kursaal);rbSay.setOnClickListener(this);rbLinkman.setOnClickListener(this);rbMessage.setOnClickListener(this);}@Overridepublic void onClick(View v) {transaction = manager.beginTransaction();       //  因为要切换界面,所以要重新获取一次事务对象switch (v.getId()){case R.id.rb_room:/***        利用replace方法,达到滑动切换界面的目的*        第一个参数是:   这个 Fragment 要放置的布局界面*        第二个参数是:   对应的 Fragment*/transaction.replace(R.id.ly_main,new RoomFragment());break;case R.id.rb_dining:transaction.replace(R.id.ly_main,new DiningFragment());break;case R.id.rb_kursaal:transaction.replace(R.id.ly_main,new KursaalFragment());break;}transaction.commit();       //  重新提交事务}
}

fragment_dining.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"tools:context=".DiningFragment"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="餐厅"android:layout_centerInParent="true"android:textSize="40dp"/></RelativeLayout>

DiningFragment.xml:

public class DiningFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_dining, container, false);}
}

fragment_kursaal.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"tools:context=".KursaalFragment"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="游乐场"android:layout_centerInParent="true"android:textSize="40dp"/></RelativeLayout>

KursaalFragment.java:

ublic class KursaalFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_kursaal, container, false);}}

创建五个子Fragment,分别为:OneFragment,TwoFragment,ThreeFragment,LuxuryFragment,VipFragment,它们的代码都是一模一样的,所以这里我就只列举一个就好:

public class OneFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentreturn inflater.inflate(R.layout.fragment_one, container, false);}
}

这个子Fragment所对应的布局也基本都是一样的,这里我列举一个即可:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"tools:context=".KursaalFragment"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="单人间"android:layout_centerInParent="true"android:textSize="40dp"/></RelativeLayout>

最核心的! 实现 Fragment + ViewPater 的代码来了:

FragAdapter.java:

public class FragAdapter extends FragmentPagerAdapter {private List<Fragment> fragmentList;public FragAdapter(FragmentManager fm,List<Fragment> fragmentList) {super(fm);this.fragmentList = fragmentList;}@Overridepublic Fragment getItem(int i) {return fragmentList.get(i);}@Overridepublic int getCount() {return fragmentList.size();}
}

Android Fragment + ViewPater + Fragment嵌套Fragment实战相关推荐

  1. Android开发-Fragment嵌套Fragment

    Android开发-Fragment嵌套Fragment 前言 使用依赖 远程仓库地址 布局实现 使用控件 xml代码 Java实现 效果图 项目地址 前言 在大多数公司中,他们会尽量少写Activi ...

  2. Android多层嵌套Fragment中调用系统相机拍照以及裁剪的相关问题解决

    多层嵌套Fragment中调用系统相机拍照.裁剪 最近公司项目有频繁使用相机拍照的需求,然后频繁的实际使用过程中遇到很多大大小小的坑,在此记录下. (ps.关于一些拍照后图片旋转.裁剪设置返回数据为t ...

  3. android编程fragment,Android中关于FragmentA嵌套FragmentB的问题

    问题描述: 在项目中Activity A中嵌套Fragment B,Fragment B中再嵌套Fragment C,如图: 问题1:在点击Activity A中主菜单1进行切换时,报错Fragmen ...

  4. android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)

    之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的. 不过,ViewP ...

  5. Android Fragment中嵌套Fragment,不显示view

    原文链接:http://www.jianshu.com/p/e146698482f5 先看一段错误代码,这段代码写在一个 Fragment 中: private void initView(){mVi ...

  6. android fragment 嵌套,Fragment嵌套Fragment时遇到的那些坑

    由于项目要改成MVP模式,自然会用到了Fragment,有时候可能会需要一个Fragment里面嵌套多个Fragment,并且add完成后需要立即刷新子Fragment的View,那么这个时候就会抛出 ...

  7. 【Android基础】Fragment 详解之Fragment介绍

    Fragment在Android 3.0( API 11)引入,是为了支持在大屏上显示更加动态.灵活的UI,比如在平板和电视上.Fragment可以看作是嵌套的Activity,类似ActivityG ...

  8. Activity嵌套fragment大全,activity加载单个fragment,TabLayout+ViewPager实现多个fragment滑动效果

    加载单个fragment效果                                                                        头部标题多个fragment ...

  9. Fragment嵌套Fragment

    问题1.fragment嵌套fragment不显示问题 通常时候,我们制作底部Tab切换,会用到fragment.即一个Activity下,使用4种fragment.这次遇到的问题是关于fragmen ...

  10. Android学习笔记13-Acitivty与Fragment通信

    1,概述 首先,如果要实现Activity与其他的Fragment之间实现通信,那么这个Fragment需要拥有一个独立的Layout文件,以便重用,并且以代码添加的方式出现在Activity中. 这 ...

最新文章

  1. Java实现最小堆一
  2. initrd.img解压和压缩
  3. Hough变换原始形式-直线检测
  4. 安装 | MatlabR2021b链接及Matlabx运行图基本运行代码与图像
  5. tensorflow随笔-检测浮点数类型check_numerics
  6. DreamWeaver做ASP 第5页
  7. oracle 一次删除多张表
  8. IOS UI开发基础之超级猜图完整版本-08
  9. i++和++i作为参数时的编译器处理方式分析
  10. with open as f用法_UE4精品教程 | C++Tuple元组的详细用法
  11. IDEA导入已有项目
  12. 例5-3 安迪的第一个字典(Andy‘s First Dictionary,UVa 10815)
  13. Java核心技术卷一 -第四章:方法参数
  14. JavaScript实现阿拉伯数字转中文数字
  15. 设计一个Person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数Regist
  16. ERP系统的八大主要功能模块
  17. 智慧数字经营小程序有什么好处
  18. Ubuntu18.04下更改或自定义键位(通过xkb)
  19. cisco设备如何查序列号
  20. 1000w的数据表,18s执行的SQL优化到0.22s?

热门文章

  1. 使用IIS实现反向代理
  2. 17秋 SDN课程 第五次上机作业
  3. 二扩域元素与整数的转换
  4. css3中的文字效果
  5. unbuffered low level IO 和 bufferd IO
  6. 根据文件名 kill 进程
  7. REGEXP使用经验
  8. ICLR2021有什么值得关注的投稿?这些高赞论文先睹为快
  9. 【面经】NLP算法-字节跳动
  10. NLP自然语言处理必修清单(修炼法则)