如图我在一个继承FragmentActivity的类中嵌套了3个fragment分别能实现3个不同的界面,默认展现第一个,在第一个的fragment中有个ViewPager在ViewPager中嵌套了3个不同的fragment来实现页面的跳转

主界面的代码

package org.xml.demo.fragment;import ogg.huanxin.huadong.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.Window;
import android.widget.Button;public class MyFragmentDemo extends FragmentActivity {private int index;// 当前fragment的indexprivate int currentTabIndex;private Fragment[] fragments;private Button[] buttons;private HomeFeagment homeFeagment;private FengqiangFragment fengqiangFragment;private PinPaiFragment pinPaiFragment;@Overrideprotected void onCreate(Bundle arg0) {// TODO Auto-generated method stubsuper.onCreate(arg0);requestWindowFeature(Window.FEATURE_NO_TITLE);super.setContentView(R.layout.myviewpagerdemo);setFindViewById();setListener();setControll();}private void setFindViewById() {// TODO Auto-generated method stubbuttons = new Button[3];buttons[0] = (Button) findViewById(R.id.bb_viewdemo_shou);buttons[1] = (Button) findViewById(R.id.bb_viewdemo_qiang);buttons[2] = (Button) findViewById(R.id.bb_viewdemo_pinpai);// 把第一个设置成默认选中状态buttons[0].setSelected(true);}private void setListener() {// TODO Auto-generated method stub
}private void setControll() {// TODO Auto-generated method stubhomeFeagment = new HomeFeagment();fengqiangFragment = new FengqiangFragment();pinPaiFragment = new PinPaiFragment();fragments = new Fragment[] { homeFeagment, fengqiangFragment,pinPaiFragment };// 添加显示第一个fragment
        getSupportFragmentManager().beginTransaction().add(R.id.rl_viewdemo_fragment, homeFeagment).add(R.id.rl_viewdemo_fragment, fengqiangFragment).add(R.id.rl_viewdemo_fragment, pinPaiFragment).hide(fengqiangFragment).hide(pinPaiFragment).show(homeFeagment).commit();}public void OnSeclet(View view) {switch (view.getId()) {case R.id.bb_viewdemo_shou:index = 0;System.out.println("ProducteTimeLimit-----" + index);break;case R.id.bb_viewdemo_qiang:index = 1;System.out.println("MyFragent" + index);break;case R.id.bb_viewdemo_pinpai:index = 2;break;}if (currentTabIndex != 0) {buttons[0].setSelected(false);}if (currentTabIndex != index) {FragmentTransaction trx = getSupportFragmentManager().beginTransaction();trx.hide(fragments[currentTabIndex]);if (!fragments[index].isAdded()) {trx.add(R.id.rl_viewdemo_fragment, fragments[index]);}trx.show(fragments[index]).commit();}buttons[currentTabIndex].setSelected(false);// 把当前tab设为选中状态buttons[index].setSelected(true);currentTabIndex = index;}}

主界面xml的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff" ><LinearLayoutandroid:id="@+id/ll_viewedemo_top"android:layout_width="match_parent"android:layout_height="60dp"android:layout_alignParentBottom="true"android:gravity="center_vertical"android:orientation="vertical" ><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#999999" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:baselineAligned="false"android:gravity="center"android:orientation="horizontal" ><RelativeLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:id="@+id/bb_viewdemo_shou"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/white"android:onClick="OnSeclet"android:drawableTop="@drawable/main_topcolor"android:gravity="center_vertical|center"android:text="首页"android:textColor="@color/main_bottoncolor"android:textSize="15sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:id="@+id/bb_viewdemo_qiang"android:layout_width="match_parent"android:layout_height="match_parent"android:onClick="OnSeclet"android:background="@android:color/white"android:drawableTop="@drawable/main_topcolor"android:gravity="center_vertical|center"android:text="最后疯抢"android:textColor="@color/main_bottoncolor"android:textSize="15sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1" ><Buttonandroid:id="@+id/bb_viewdemo_pinpai"android:layout_width="match_parent"android:layout_height="match_parent"android:onClick="OnSeclet"android:background="@android:color/white"android:drawableTop="@drawable/main_topcolor"android:gravity="center_vertical|center"android:text="品牌抢购"android:textColor="@color/main_bottoncolor"android:textSize="15sp" /></RelativeLayout></LinearLayout></LinearLayout><RelativeLayoutandroid:id="@+id/rl_viewdemo_fragment"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@id/ll_viewedemo_top" ></RelativeLayout></RelativeLayout>

View Code

其中默认显示主界面的代码为

package org.xml.demo.fragment;import java.util.ArrayList;import ogg.huanxin.huadong.R;
import android.os.Bundle;
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.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;public class HomeFeagment extends Fragment {private ViewPager mPager;private TextView barText;private TextView view1, view2, view3;private ArrayList<Fragment> fragmentlist;private int currIndex;// 当前的叶卡标号
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.homefeagment, container, false);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);InitTextView();InitTextBar();InitViewPager();}/** 初始化标签名字*/private void InitTextView() {view1 = (TextView) getActivity().findViewById(R.id.hometext1);view2 = (TextView) getActivity().findViewById(R.id.hometext2);view3 = (TextView) getActivity().findViewById(R.id.hometext3);view1.setOnClickListener(new txListener(0));view2.setOnClickListener(new txListener(1));view3.setOnClickListener(new txListener(2));}private class txListener implements View.OnClickListener {private int index = 0;public txListener(int i) {index = i;}@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub
            mPager.setCurrentItem(index);}}/** 初始化图片的位移像素*/private void InitTextBar() {// TODO Auto-generated method stub// barText = (TextView) super.findViewById(R.id.cursor);barText = (TextView) getActivity().findViewById(R.id.homecursor);Display display = getActivity().getWindow().getWindowManager().getDefaultDisplay();// 得到显示的屏宽度DisplayMetrics metrics = new DisplayMetrics();display.getMetrics(metrics);int tabLimeLength = metrics.widthPixels / 3;LayoutParams lp = (LayoutParams) barText.getLayoutParams();lp.width = tabLimeLength;barText.setLayoutParams(lp);}/** 初始化ViewPager*/private void InitViewPager() {// TODO Auto-generated method stubmPager = (ViewPager) getActivity().findViewById(R.id.vhomePager);fragmentlist = new ArrayList<Fragment>();Fragment fragment = new Fragment1();Fragment fragment2 = new Fragmentview2();Fragment fragment3 = new Fragmentview3();fragmentlist.add(fragment);fragmentlist.add(fragment2);fragmentlist.add(fragment3);// 给ViewPager添加适配器// 给ViewPager设置适配器mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(),fragmentlist));// 设置当前显示标签页为第一页mPager.setCurrentItem(0);// mPager.setOnPageChangeListener(new MyPn);// 页面变化时的监听器mPager.setOnPageChangeListener(new MyOnpageChangeListener());}private class MyFragmentPagerAdapter extends FragmentPagerAdapter {private ArrayList<Fragment> list;public MyFragmentPagerAdapter(FragmentManager fm,ArrayList<Fragment> list) {super(fm);this.list = list;// TODO Auto-generated constructor stub
        }// 得到每个item
        @Overridepublic Fragment getItem(int arg0) {// TODO Auto-generated method stubreturn list.get(arg0);}// 初始化每个页面选项
        @Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stubreturn super.instantiateItem(container, position);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn list.size();}@Overridepublic int getItemPosition(Object object) {// TODO Auto-generated method stubreturn super.getItemPosition(object);}}private class MyOnpageChangeListener implements OnPageChangeListener {@Overridepublic void onPageScrollStateChanged(int arg0) {/** 此方法是在状态改变的时候调用,其中arg0这个参数 有三种状态(0,1,2)。arg0* ==1的时辰默示正在滑动,arg0==2的时辰默示滑动完毕了,arg0==0的时辰默示什么都没做。*/if (arg0 == 0) {Log.e("-----------", ">>>>>>>>>>onpageselected==0");} else if (arg0 == 1) {Log.e("-----------", ">>>>>>>>>>onpageselected==1");} else if (arg0 == 2) {Log.e("-----------", ">>>>>>>>>>onpageselected==2");}}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {/** onPageScrolled(int arg0,float arg1,int arg2)* ,当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到 调用。 其中三个参数的含义分别为: arg0:当前页面,* 及你点击滑动的页面 arg1:当前页面偏移的百分比 arg2:当前页面偏移的像素位置*/Log.e("-----------", "------------>>>>onpagescrolled>>>arg0=="+ arg0 + ">>>arg1==" + arg1 + ">>>arg2==" + arg2);LinearLayout.LayoutParams ll = (LayoutParams) barText.getLayoutParams();if (currIndex == arg0) {ll.leftMargin = (int) (currIndex * barText.getWidth() + arg1* barText.getWidth());} else if (currIndex > arg0) {ll.leftMargin = (int) (currIndex * barText.getWidth() - (1 - arg1)* barText.getWidth());}barText.setLayoutParams(ll);}@Overridepublic void onPageSelected(int arg0) {/** onPageSelected(int arg0) : 此方法是页面跳转完后得到调用,* arg0是你当前选中的页面的Position(位置编号)。*/currIndex = arg0;}}
}

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#eee" ><LinearLayoutandroid:id="@+id/ll_main_text"android:layout_width="match_parent"android:layout_height="50dp"android:background="#FF7200"android:gravity="center_vertical" ><LinearLayoutandroid:layout_width="60dp"android:layout_height="match_parent"android:gravity="center" ><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:contentDescription="@null"android:scaleType="fitCenter"android:src="@drawable/arrow_left" /></LinearLayout><Viewandroid:layout_width="0.5dp"android:layout_height="match_parent"android:background="#FE8B40" /><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="0.8"android:gravity="center"android:text="限时购"android:textColor="@android:color/white"android:textSize="20sp" /><Viewandroid:layout_width="0.5dp"android:layout_height="match_parent"android:background="#FE8B40" /><LinearLayoutandroid:layout_width="60dp"android:layout_height="match_parent"android:gravity="center" ><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:contentDescription="@null"android:scaleType="fitCenter"android:src="@drawable/dropdown" /></LinearLayout></LinearLayout><!--  --><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/ll_main_text"android:background="@android:color/white"android:orientation="vertical" ><LinearLayoutandroid:id="@+id/linearlayout1"android:layout_width="match_parent"android:layout_height="50.0dip"android:layout_gravity="center"android:background="#FFFFFF" ><TextViewandroid:id="@+id/hometext1"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1.0"android:gravity="center"android:text="页卡1"android:textColor="#000000"android:textSize="22.0dip" /><TextViewandroid:id="@+id/hometext2"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1.0"android:gravity="center"android:text="页卡2"android:textColor="#000000"android:textSize="22.0dip" /><TextViewandroid:id="@+id/hometext3"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1.0"android:gravity="center"android:text="页卡3"android:textColor="#000000"android:textSize="22.0dip" /></LinearLayout><TextViewandroid:id="@+id/homecursor"android:layout_width="250dp"android:layout_height="5dp"android:background="#990033" /><android.support.v4.view.ViewPagerandroid:id="@+id/vhomePager"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:background="#eee"android:flipInterval="30"android:persistentDrawingCache="animation" /></LinearLayout></RelativeLayout>

View Code

第二个fragment代码和xml

package org.xml.demo.fragment;import ogg.huanxin.huadong.R;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;public class FengqiangFragment extends Fragment implements OnClickListener {private Button dialogButton;private ProgressDialog progressDialog;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.fengqiangframent, container, false);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);setFindViewById();setListener();setControll();}private void setFindViewById() {// TODO Auto-generated method stubdialogButton = (Button) getActivity().findViewById(R.id.bb_fengqiang_dialog);progressDialog = new ProgressDialog(getActivity());progressDialog.setMessage("正在跳转");// 设置返回键不能将其取消progressDialog.setCancelable(false);}private void setListener() {// TODO Auto-generated method stubdialogButton.setOnClickListener(this);}private void setControll() {// TODO Auto-generated method stub
}@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubswitch (arg0.getId()) {case R.id.bb_fengqiang_dialog:dialogSet();break;default:break;}}/** 设置一个警告框*/private void dialogSet() {// TODO Auto-generated method stubAlertDialog.Builder builder = new Builder(getActivity());builder.setTitle("是否跳转");builder.setMessage("当点击    确定    时 会出现个圆形的进度条  在5秒后 自动消失 ...");builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stub
                progressDialog.show();new Handler().postDelayed(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stub
                        progressDialog.dismiss();}}, 5000);}});builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stub
}});builder.create().show();}
}

View Code

<?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" ><LinearLayoutandroid:id="@+id/ll_main_text"android:layout_width="match_parent"android:layout_height="50dp"android:background="#FF7200"android:gravity="center_vertical" ><LinearLayoutandroid:layout_width="60dp"android:layout_height="match_parent"android:gravity="center" ><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:contentDescription="@null"android:scaleType="fitCenter"android:src="@drawable/arrow_left" /></LinearLayout><Viewandroid:layout_width="0.5dp"android:layout_height="match_parent"android:background="#FE8B40" /><TextViewandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="0.8"android:gravity="center"android:text="限时购"android:textColor="@android:color/white"android:textSize="20sp" /><Viewandroid:layout_width="0.5dp"android:layout_height="match_parent"android:background="#FE8B40" /><LinearLayoutandroid:layout_width="60dp"android:layout_height="match_parent"android:gravity="center" ><ImageViewandroid:layout_width="30dp"android:layout_height="30dp"android:contentDescription="@null"android:scaleType="fitCenter"android:src="@drawable/dropdown" /></LinearLayout></LinearLayout><Buttonandroid:id="@+id/bb_fengqiang_dialog"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:text="hello word" /></LinearLayout>

View Code

第三个fragment

package org.xml.demo.fragment;import ogg.huanxin.huadong.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;public class PinPaiFragment extends Fragment {@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubreturn inflater.inflate(R.layout.pinpaifragment, container, false);}@Overridepublic void onActivityCreated(Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);        }}

转载于:https://www.cnblogs.com/wangfengdange/p/4978432.html

ViewPager+fragment的使用相关推荐

  1. android 可折叠标题栏,ViewPager + Fragment + 折叠式标题栏异常

    我模仿别人的知乎日报,新闻列表页没问题,内容明细页(NewsDetail)用的是ViewPager+Fragment.可以左右滑动看左右的新闻的. 我的项目地址是链接描述 但是我在做顶部可折叠式标题栏 ...

  2. TabLayout+ViewPager+Fragment中Fragment的可见和不可见问题

    场景 TabLayout+ViewPager+Fragment的使用过程中需要判断Fragment是否对用户可见,监听Fragment由不可见变为可见的事件 解决方案 重写Fragment的setUs ...

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

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

  4. ViewPager -- Fragment 切换卡顿 性能优化

    当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即 Fragment需要加载UI内容,而又频繁地切换Fragment, ...

  5. 安卓开发之使用viewpager+fragment实现滚动tab页

    闲着.用viewpager+fragment实现了个滚动tab..轻拍,以后会陆续发先小东西出来..爱分享,才快乐.demo见附件.. Java代码   package com.example.dem ...

  6. ViewPager+Fragment实现TabHost(可复用的类)

    效果图: 之前写了一个基于ViewPager+Fragment实现的Tabhost(具体详情: http://blog.csdn.net/zhangphil/article/details/43700 ...

  7. BottomNavigationView+ViewPager+Fragment仿微信底部导航栏

    目标: 要实现的界面如下: 此时,我们需要采用BottomNavigationView+ViewPager+Fragment,一点点的说起.首先要在app/build.gradle里添加: imple ...

  8. ViewPager+Fragment懒加载

    原文链接:http://blog.csdn.net/linglongxin24/article/details/53205878 Android中ViewPager+Fragment取消(禁止)预加载 ...

  9. ViewPager+Fragment基本使用方法(转自网络)

    2019独角兽企业重金招聘Python工程师标准>>> 项目中用到viewpager+fragment 直接使用转的链接代码,会有懒加载 而我需要滑动到当前页面的时候,才对当前页面的 ...

  10. TabLayout+Viewpager+Fragment实现分页滚动

    效果如上,顶部标签滚动底下的页面也跟着滚动 灰色的标签只是一个recyclerview装起来的 这里用TabLayout+Viewpager+Fragment实现 先看布局 <?xml vers ...

最新文章

  1. Bitdefender Internet Security 2013 – 免费3个月
  2. 默认访问首页 || 国际化||设置全局字符编码的默认设置
  3. 用数据可视化解读:为何2亿国人爱钓鱼
  4. 为什么L1稀疏,L2平滑?
  5. linux home目录撑爆,Linux centos /var/lib/docker/container目录导致系统存储爆满,占用大量存储解决方案...
  6. 如何在cmd命令提示符里打开Python
  7. SpringBoot+Vue项目校园运动会管理系统
  8. 详解什么是运营商大数据?
  9. 计算机科学与技术专业知识好学吗,计算机科学与技术好学吗
  10. 爬虫---数据的提取
  11. CM源码(CyanogenMod)源码编译
  12. 解除360的系统压缩
  13. 美还是丑?这有一个CNN开发的颜值评分器 | 实战
  14. 我国会计计算机的发展历程,会计的发展历程是什么
  15. 小白学 Python(1):开篇
  16. 中科院正研制多核CPU龙芯3号 将用于超级计算机(转)
  17. XB7608AFJ单节锂电池二合一保护芯片
  18. 怎么让笔记本合上后显示屏不灭
  19. Android手机加速
  20. c语言基础知识题目,C语言基础知识复习题

热门文章

  1. 前端技术搭建俄罗斯方块(内含源码)
  2. rowspan无效_关于在 table 中给 td 设定 position:absolute 引起的 rowspan 失效的问题
  3. DOTA2下载速度较慢解决方法
  4. spss数据分析--信度效度分析
  5. 锂电池健康状态估算方法综述
  6. tkinter播gif图片动画
  7. Keras实现英文到中文机器翻译 seq2seq+LSTM
  8. 家庭IOT监测之摄像头OV7670测试
  9. 黑匣子解密要多久_解密“黑匣子”:黑匣子发展历史及如何定位打捞
  10. Linux与好莱坞电影