文章目录

  • 二级页面首页的ViewPager页面切换
    • 效果展示
    • 代码实现
      • 创建几个三级页面Fragment视图
      • ViewPager的Fragment数据丢失问题
      • 创建fragment_home视图文件
      • HomeFragment.java

二级页面首页的ViewPager页面切换

效果展示

代码实现

创建几个三级页面Fragment视图

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;public class Page1Fragment extends Fragment {View view = null;@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//判断view是否为空if(view==null) {view = getMyView();}else {//清除当前重用的view的parentViewGroup viewGroup = (ViewGroup) view.getParent();if (viewGroup!=null){viewGroup.removeView(view)  ;}}return view;}private View getMyView() {TextView textView= new TextView(getActivity());textView.setBackgroundColor(Color.GRAY);textView.setText("页面1");textView.setTextSize(30);textView.setGravity(Gravity.CENTER);return textView;}
}

ViewPager的Fragment数据丢失问题

一般用ViewPager滑动页面时会出现数据丢失的问题

  • 当Fragment滑出屏幕的时候,系统调onDestoryView方法
    销毁视图
  • 当Fragment重新滑入屏幕的时候,系统调onCreateView方法
    创建新的视图
//清除当前重用的view的parentViewGroup viewGroup = (ViewGroup) view.getParent();if (viewGroup!=null){viewGroup.removeView(view)  ;}

上述代码可以解决数据丢失问题

创建fragment_home视图文件

TabLayout需要引入依赖
implementation ‘com.android.support:design:28.0.0’

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><!--app:tabMode="scrollable" 如果标题过多,滑动 --><android.support.design.widget.TabLayoutandroid:id="@+id/tl_home"app:tabMode="scrollable"app:tabTextColor="#242424"app:tabIndicatorHeight="6dp"app:tabIndicatorFullWidth="false"app:tabSelectedTextColor="#F04445"android:layout_width="match_parent"android:layout_height="40dp"></android.support.design.widget.TabLayout><android.support.v4.view.ViewPagerandroid:id="@+id/vp_home"android:layout_width="match_parent"android:layout_height="match_parent"></android.support.v4.view.ViewPager></LinearLayout>

HomeFragment.java

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;import com.example.administrator.zhjrtt.R;
import com.xzit.fragment.sub.Page1Fragment;
import com.xzit.fragment.sub.Page2Fragment;
import com.xzit.fragment.sub.Page3Fragment;
import com.xzit.fragment.sub.Page4Fragment;import java.util.ArrayList;
import java.util.List;public class HomeFragment extends Fragment {class MyPagerAdapter extends FragmentPagerAdapter{//创建集合存放页面private List<Fragment> pages = new ArrayList<>();//创建集合存放指示器标题private List<String> titles = new ArrayList<>();public MyPagerAdapter(FragmentManager fm) {super(fm);//将初始化Fragment页面放入页面集合pages.add(new Page1Fragment());pages.add(new Page2Fragment());pages.add(new Page3Fragment());pages.add(new Page4Fragment());//将标题内容放入集合titles.add("Page1Fragment");titles.add("Page2Fragment");titles.add("Page3Fragment");titles.add("Page4Fragment");}@Nullable@Overridepublic CharSequence getPageTitle(int position) {//返回指定位置标题内容return titles.get(position);}@Overridepublic Fragment getItem(int i) {//返回页面内容return pages.get(i);}@Overridepublic int getCount() {//返回页面数量return pages.size();}}@Nullable@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = getMyView();return view;}private View getMyView() {//1.布局viewpager//2.加载View view = View.inflate(getActivity(),R.layout.fragment_home,null);ViewPager viewPager = view.findViewById(R.id.vp_home);//3.定义适配器//4.初始化设置适配器MyPagerAdapter myPagerAdapter = new MyPagerAdapter(getFragmentManager());viewPager.setAdapter(myPagerAdapter);//5.初始化指示器TabLayout tabLayout = view.findViewById(R.id.tl_home);tabLayout.setupWithViewPager(viewPager);//->viewpager-->adapter->getPageTitlereturn view;}
}

(仿头条APP项目)3.二级页面首页的ViewPager页面切换相关推荐

  1. (仿头条APP项目)8.新闻详情页面实现和butterknife插件使用

    文章目录 butterknife插件使用 导入依赖 下载插件 使用 新闻详情页面显示 效果图 实现思路 具体实现 布局 数据库添加收藏表 新闻详情页面具体业务逻辑实现 详情页面跳转 效果图 具体实现步 ...

  2. (仿头条APP项目)4.父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据

    文章目录 父类BaseFragment创建,用retrofit和gson获取并解析服务器端数据 效果展示 创建父类BaseFragment解决代码重复问题 用retrofit和gson获取并解析服务器 ...

  3. (仿头条APP项目)7.首页标签页完善和微头条页面设计实现

    文章目录 一.首页标签页完善 效果图 具体实现 二.微头条页面设计实现 效果图 实现思路 具体实现 布局 微头条页面实体类 业务逻辑代码 一.首页标签页完善 在之前已经把首页北京标签的新闻列表页面基本 ...

  4. (仿头条APP项目)2.主界面按钮切换Fragment页面

    文章目录 主界面按钮切换Fragment页面 效果展示 框架结构 xml视图 主视图 选择器和style java代码模块 创建4个Fragment 1.绑定按钮选择事件 2.初始化和用HashMap ...

  5. (仿头条APP项目)5.列表页面设计实现

    文章目录 列表页面设计 效果图 具体实现 添加Glide依赖 添加主页面和两个列表布局 用GsonFormat快速创建NewListData实体类存放新闻列表数据 MyApi添加一个获取新闻列表的方法 ...

  6. (仿头条App项目)9.视频列表页面实现

    文章目录 视频列表页面实现 效果图 相关布局 功能实现 引入第三方视频库插件 从服务端获取数据 显示 滚动播放功能实现 视频列表页面实现 效果图 相关布局 视频VideoFragment页面放一个Li ...

  7. (仿头条APP项目)1.app载入界面相关功能实现

    app载入界面相关功能实现 模块功能 1.设置页面布局 2.初始化视频播放 //控制是否跳到主界面private boolean isjump = false;private VideoView vi ...

  8. (仿头条APP项目)6.点击过的新闻列表文字变灰和下拉刷新与滚动加载新闻数据

    文章目录 一.点击过的新闻列表文字变灰 效果图 实现思路 导入ormlite数据库类依赖 利用ormlite创建数据库和表 创建数据库类MyDbHelper 创建数据库中的新闻实体类NewInfo 页 ...

  9. 头条App项目测试实战(二)App手工测试流程以及需求分析与评审

    熟悉头条App项目步骤: 业务特性 用户与角色 组织架构图 技术栈 头条App测试流程(一次迭代) 测试流程 需求分析与评审 编写测试计划(测试方案) 设计测试用例与评审 执行测试用例与缺陷跟踪 编写 ...

最新文章

  1. python项目之网络聊天室_Python实现多人聊天室
  2. 轻松入门React和Webpack
  3. 通知 | 2020年度“RONG”奖学金入围答辩名单公布
  4. android setinputtype光标,Android屏蔽软键盘并且显示光标的实例详解
  5. 解决Win10下_findnext()异常
  6. CNCF推出云原生网络功能(CNF)Testbed
  7. Spring学习总结一
  8. android stuido 在线安装svn插件,添加版本库无响应
  9. HDU6184【Counting Stars】(三元环计数)
  10. linux下unix timestamp 与 可视化时间/常规时间进行转换
  11. [ExtJS5学习笔记]第十五节 Extjs5表格显示不友好?panel的frame属性在作怪
  12. 中关村十大AI研究院 | 盘点
  13. Laravel 学习笔记5.3之 Query Builder 源码解析(下)
  14. Linux异常进程kill无效的解决办法
  15. mysql 全局排序 取第n条_MySQL分组排序取前N条记录 以及 生成自动数字序列 的SQL...
  16. App功能测试的7大注意点
  17. 基于Springboot+vue开发实现自行车租赁管理系统
  18. linux清除网络记录,Linux清除用户登录记录和命令历史方法
  19. Vue运行环境及淘宝镜像(cnpm命令)安装
  20. 详解区块链(很详很长)

热门文章

  1. C++ Primer 5th笔记(chap 15 OOP)虚函数
  2. nginx常用功能介绍
  3. linux pwn练习0x01
  4. JUSTCTF校赛安卓wp
  5. 2020-11-18(失败的一天)
  6. 【网络安全】能在Twitter和Instagram上实现信息收集和数据获取的工具
  7. ReadDirectoryChangesW监控目录文件操作
  8. python实现AES算法
  9. vue父组件自动执行子组件事件
  10. CSDN的Markdown编辑器的使用