接上文:

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的两种方式 方式(二)的更多相关文章

  1. [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)

    Android ViewPager 中加载 Fragmenet的两种方式 一.当fragment里面的内容较少时,直接 使用fragment xml布局文件填充 文件总数 布局文件:view_one. ...

  2. WebView加载页面的两种方式——网络页面和本地页面

    WebView加载页面的两种方式 一.加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二.加载本地页面 1.加载asse ...

  3. Ajax中的get和post两种请求方式的异同

    Ajax中我们经常用到get和post请求.那么什么时候用get请求,什么时候用post方式请求呢? 在做回答前我们首先要了解get和post的区别.   1. get是把参数数据队列加到提交表单的A ...

  4. Hibernate中双向多对多的两种配置方式

    Hibernate中双向多对多的两种配置方式 1.建立多对多双向关联关系 package cn.happy.entitys; import java.util.HashSet; import java ...

  5. Android中Fragment的两种创建方式

    fragment是Activity中用户界面的一个行为或者是一部分.你可以在一个单独的Activity上把多个Fragment组合成为一个多区域的UI,并且可以在多个Activity中再使用.你可以认 ...

  6. UIImage加载图片的两种方法区别

    Apple官方的文档为生成一个UIImage对象提供了两种方法加载图片: 1. imageNamed,其参数为图片的名字: 2. imageWithContentsOfFile,其参数也是图片文件的路 ...

  7. MyBatis中主键回填的两种实现方式

    主键回填其实是一个非常常见的需求,特别是在数据添加的过程中,我们经常需要添加完数据之后,需要获取刚刚添加的数据 id,无论是 Jdbc 还是各种各样的数据库框架都对此提供了相关的支持,本文我就来和和大 ...

  8. 在主Android Activity中加载Fragment的一般简易方法 ,来模拟一个微信界面。

    在Fragment的生命周期中,需要重点关注onCreate.onCreateView.onViewCreated.Activity与Fragment生命周期在设计模式上大体一致. package c ...

  9. 在MVC中加载view(点开链接)的方式

    主要有: Html.ActionLink Html.RenderPartial Html.RenderAction Html.Partial AJAX.ActionLink load 浏览器对象模型 ...

随机推荐

  1. windows下操作linux虚拟机映射网络驱动器中文件提示chmod权限不足解决方案

    为了方便操作,linux虚拟机会通过windows下连接网络驱动器的方式共享自己的文件,对于前端来说,我想把gulp放在windows磁盘,操作虚拟机中的php文件,一来节省虚拟机磁盘大小,二来解决虚 ...

  2. Python 分布式进程

    #-*-coding:utf-8-*- '''分布式进程指的是将Process进程分不到多台机器上,充分利用多台机器的性能完成复杂的任务''' #服务器端 #--------------------- ...

  3. webpack入门(一)webpack的动机 ---前端专业英语

    记得某次考试,出国N年老师出的卷子全是英语,坑的英语不好的我们不要不要的.幸亏上了专业英语课.最重要的是专业英语对于我们很重要,比如webpack,一堆博客都是几小时入门,如何会用webpack,当你 ...

  4. IO多路复用机制详解

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  5. jackson json转对象 对象转json

    一,Jackson使用示例 第1步:创建ObjectMapper对象. 创建ObjectMapper对象.它是一个可重复使用的对象. ObjectMapper mapper = new ObjectM ...

  6. poj1958 strange towers of hanoi

    说是递推,其实也算是个DP吧. 就是4塔的汉诺塔问题. 考虑三塔:先从a挪n-1个到b,把最大的挪到c,然后再把n-1个从b挪到c,所以是 f[i] = 2 * f[i-1] + 1; 那么4塔类似: ...

  7. A1134. Vertex Cover

    A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...

  8. [NOI2017]游戏(2-SAT)

    这是约半年前写的题解了,就搬过来吧 感觉这是NOI2017最水的一题(当然我还是不会2333),因为是一道裸的2-SAT.我就是看着这道题学的2-SAT 算法一:暴力枚举.对于abc二进制枚举,对于x ...

  9. vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案

    一般来说有两种解决方案. 第一种:添加“--plink-tped”参数: 用vcftools的“--plink”参数生成plink格式文件时,小样本量测试可以正常生成plink格式,用大样本量时产生W ...

  10. 自定义QMenu

    参考: http://blog.csdn.net/qq1623803207/article/details/77449884 http://blog.sina.com.cn/s/blog_a6fb6c ...