[Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)
接上文:
https://www.cnblogs.com/wukong1688/p/10693338.html
Android ViewPager 中加载 Fragmenet的两种方式 方式(一)
二、使用Fragment来填充ViewPager
Google 官方是建议我们使用Fragment来填充ViewPager的,这样可以更加方便的生成每个Page以及管理 每个Page的生命周期!当然它给我们提供了两个不同的Adapter,他们分别是: FragmentPageAdapter和FragmentStatePagerAdapter!
一般复杂的布局(如包含 ListView 或 RecycleView 等) , 都用此方法
文件总数
布局文件:fg_page1.xml + fg_page2.xml
自定义Fragment 文件: MyFragment1.java + MyFragment2.java (继承自 Fragment类)
自定义Adapter类: MyFragmentPagerAdapter.java (继承自 FragmentPagerAdapter 类)
Activity 布局文件: activity_test_vp2.xml
Activity Java文件: MainActivity.java
本文仍以2个Page为例,来展现实现代码
1)布局文件 fg_page1.xml (fg_page2.xml类似)
<?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"
android:orientation="vertical"> <TextView
android:id="@+id/txt_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textSize="20sp" /> </LinearLayout>
2)自定义Fragment 文件: MyFragment2.java (MyFragment2.java 类似)
package com.jack.testmd; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; public class MyFragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fg_page1, container, false);
TextView txt_content = (TextView) view.findViewById(R.id.txt_content);
txt_content.setText("第一个Fragment"); /*
* 如果是其他逻辑
* 例如 recycleList等 就在这里面继续设置数据
* */ return view;
}
}
3)自定义Adapter类: MyFragmentPagerAdapter.java
package com.jack.testmd; import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter; import java.util.List; public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
private FragmentManager fragmetnmanager; //创建FragmentManager
private List<Fragment> listfragment; //创建一个List<Fragment> public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.fragmetnmanager = fm;
this.listfragment = list;
} @Override
public Fragment getItem(int arg0) {
return listfragment.get(arg0); //返回第几个fragment
} @Override
public int getCount() {
return listfragment.size(); //总共有多少个fragment
}
}
4)Activity 布局文件: activity_test_vp2.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=".TestVp1Activity"> <android.support.v4.view.ViewPager
android:id="@+id/vpager_one"
android:layout_width="match_parent"
android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </RelativeLayout>
5)使用 -- Activity Java文件: MainActivity.java :
private ViewPager vpager_one;
private ArrayList<Fragment> aList;
private MyFragmentPagerAdapter mAdapter; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_vp2); vpager_one = (ViewPager) findViewById(R.id.vpager_one); aList = new ArrayList<Fragment>(); //new一个List<Fragment>
aList.add(new MyFragment1());
aList.add(new MyFragment2()); mAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), aList);
vpager_one.setAdapter(mAdapter);
vpager_one.setCurrentItem(0);
}
本博客地址: wukong1688
本文原文地址:https://www.cnblogs.com/wukong1688/p/10693536.html
转载请著名出处!谢谢~~
[Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)的更多相关文章
- [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)
Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...
- WebView加载页面的两种方式——网络页面和本地页面
WebView加载页面的两种方式 一.加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二.加载本地页面 1.加载asse ...
- Ajax中的get和post两种请求方式的异同
Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别. 1. get是把参数数据队列加到提交表单的A ...
- Hibernate中双向多对多的两种配置方式
Hibernate中双向多对多的两种配置方式 1.建立多对多双向关联关系 package cn.happy.entitys; import java.util.HashSet; import java ...
- Android中Fragment的两种创建方式
fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...
- UIImage加载图片的两种方法区别
Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路 ...
- MyBatis中主键回填的两种实现方式
主键回填其实是一个非常常见的需求,特别是在数据添加的过程中,我们经常需要添加完数据之后,需要获取刚刚添加的数据 id,无论是 Jdbc 还是各种各样的数据库框架都对此提供了相关的支持,本文我就来和和大 ...
- 在主Android Activity中加载Fragment的一般简易方法 ,来模拟一个微信界面。
在Fragment的生命周期中,需要重点关注onCreate.onCreateView.onViewCreated.Activity与Fragment生命周期在设计模式上大体一致. package c ...
- 在MVC中加载view(点开链接)的方式
主要有: Html.ActionLink Html.RenderPartial Html.RenderAction Html.Partial AJAX.ActionLink load 浏览器对象模型 ...
随机推荐
- ftp利用脚本添加本地用户
指定用户名,家目录,密码,顺序不可颠倒.eg: sh 脚本名 用户名 家目录 密码 #!/bin/bash # set -e ] //判断给定参数是否为三个 homepath=$ password=$ ...
- 【BZOJ1023】仙人掌图(仙人掌,动态规划)
[BZOJ1023]仙人掌图(仙人掌,动态规划) 题面 BZOJ 求仙人掌的直径(两点之间最短路径最大值) 题解 一开始看错题了,以为是求仙人掌中的最长路径... 后来发现看错题了一下就改过来了.. ...
- 【CF833E】Caramel Clouds(线段树)
[CF833E]Caramel Clouds(线段树) 题面 CF 洛谷 题解 首先把区间一段一段分出来,那么只有四种情况. 要么没有被任何一朵云被覆盖,那么直接就会产生这一段的贡献. 要么被一朵云覆 ...
- 通过Nifi 导入csv文件到HDFS
1. 拖入一个GetHttp 的processor 右健选择 configure -> properties , 设置 url 和 filename url : http://s ...
- luogu3188/bzoj1190 梦幻岛宝珠 (分层背包dp)
他都告诉你能拆了 那就拆呗.把每个重量拆成$a*2^b$的形式 然后对于每个不同的b,先分开做30个背包 再设f[i][j]表示b<=i的物品中 容量为$ j*2^i+W\&((1< ...
- 让Mac 可以使用mysql -u用户直接连接数据库
在执行完安装版本的mysql数据库后,会发现执行mysql还是会出现 command not found的错误:解决方案 方案1.设置软连接到/usr/local/bin下在命令行下输入如下 ln - ...
- poj-3279 poj-1753(二进制枚举)
题目链接:http://poj.org/problem?id=3279 题目大意: 有一个m*n的棋盘(1 ≤ M ≤ 15; 1 ≤ N ≤ 15),每个格子有两面分别是0或1,每次可以对一个格子做 ...
- web字体的设置
@font-face { font-family: 'OpenSans'; src: url("../fonts/open-sans-v15-latin-regular.woff2" ...
- SQL查询语句的进阶使用
MySQL的进阶使用 sql语句一些功能的使用 导入现有大量数据文件步骤 1) 把*.sql文件拷贝到Linux某一位置(例如Desktop) 2) Linux命令行进入该位置 cd ~/Deskto ...
- Building Microservices with Spring Boot and Apache Thrift. Part 2. Swifty services
http://bsideup.blogspot.com/2015/04/spring-boot-thrift-part2.html In previous article I showed y ...