Android Fragment + ViewPater + Fragment嵌套Fragment实战
效果图:
图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实战相关推荐
- Android开发-Fragment嵌套Fragment
Android开发-Fragment嵌套Fragment 前言 使用依赖 远程仓库地址 布局实现 使用控件 xml代码 Java实现 效果图 项目地址 前言 在大多数公司中,他们会尽量少写Activi ...
- Android多层嵌套Fragment中调用系统相机拍照以及裁剪的相关问题解决
多层嵌套Fragment中调用系统相机拍照.裁剪 最近公司项目有频繁使用相机拍照的需求,然后频繁的实际使用过程中遇到很多大大小小的坑,在此记录下. (ps.关于一些拍照后图片旋转.裁剪设置返回数据为t ...
- android编程fragment,Android中关于FragmentA嵌套FragmentB的问题
问题描述: 在项目中Activity A中嵌套Fragment B,Fragment B中再嵌套Fragment C,如图: 问题1:在点击Activity A中主菜单1进行切换时,报错Fragmen ...
- android viewpager 嵌套fragment,Android ViewPager+Fragment多层嵌套(使用问题处理)
之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的. 不过,ViewP ...
- Android Fragment中嵌套Fragment,不显示view
原文链接:http://www.jianshu.com/p/e146698482f5 先看一段错误代码,这段代码写在一个 Fragment 中: private void initView(){mVi ...
- android fragment 嵌套,Fragment嵌套Fragment时遇到的那些坑
由于项目要改成MVP模式,自然会用到了Fragment,有时候可能会需要一个Fragment里面嵌套多个Fragment,并且add完成后需要立即刷新子Fragment的View,那么这个时候就会抛出 ...
- 【Android基础】Fragment 详解之Fragment介绍
Fragment在Android 3.0( API 11)引入,是为了支持在大屏上显示更加动态.灵活的UI,比如在平板和电视上.Fragment可以看作是嵌套的Activity,类似ActivityG ...
- Activity嵌套fragment大全,activity加载单个fragment,TabLayout+ViewPager实现多个fragment滑动效果
加载单个fragment效果 头部标题多个fragment ...
- Fragment嵌套Fragment
问题1.fragment嵌套fragment不显示问题 通常时候,我们制作底部Tab切换,会用到fragment.即一个Activity下,使用4种fragment.这次遇到的问题是关于fragmen ...
- Android学习笔记13-Acitivty与Fragment通信
1,概述 首先,如果要实现Activity与其他的Fragment之间实现通信,那么这个Fragment需要拥有一个独立的Layout文件,以便重用,并且以代码添加的方式出现在Activity中. 这 ...
最新文章
- Java实现最小堆一
- initrd.img解压和压缩
- Hough变换原始形式-直线检测
- 安装 | MatlabR2021b链接及Matlabx运行图基本运行代码与图像
- tensorflow随笔-检测浮点数类型check_numerics
- DreamWeaver做ASP 第5页
- oracle 一次删除多张表
- IOS UI开发基础之超级猜图完整版本-08
- i++和++i作为参数时的编译器处理方式分析
- with open as f用法_UE4精品教程 | C++Tuple元组的详细用法
- IDEA导入已有项目
- 例5-3 安迪的第一个字典(Andy‘s First Dictionary,UVa 10815)
- Java核心技术卷一 -第四章:方法参数
- JavaScript实现阿拉伯数字转中文数字
- 设计一个Person类,包含name、age、sex属性以及对这些属性操作的方法。实现并测试这个类。根据类的封装性要求,把name、age、sex声明为私有的数据成员,声明公有的成员函数Regist
- ERP系统的八大主要功能模块
- 智慧数字经营小程序有什么好处
- Ubuntu18.04下更改或自定义键位(通过xkb)
- cisco设备如何查序列号
- 1000w的数据表,18s执行的SQL优化到0.22s?