
如图所示,ViewPager和Fragment配合使用后,发现ViewPager在退出后,fragment没有退出,
导致我在左边的菜单里面切换的时候,重新弄进入“本地”时,Fragment没有刷新,就什么都没显示了。
通过LOG打印,发现fragment在创建后,生命周期没有再变化过。但是ViewPager是有DetachedFromWindow

使用方法就是网上流传的最基本的FragmentPagerAdapter和ViewPager。
求大神指教!
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.tubban.viewpager;
import android.os.Parcelable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
/**
* Implementation of {@link android.support.v4.view.PagerAdapter} that
* represents each page as a {@link Fragment} that is persistently
* kept in the fragment manager as long as the user can return to the page.
*
* <p>This version of the pager is best for use when there are a handful of
* typically more static fragments to be paged through, such as a set of tabs.
* The fragment of each page the user visits will be kept in memory, though its
* view hierarchy may be destroyed when not visible. This can result in using
* a significant amount of memory since fragment instances can hold on to an
* arbitrary amount of state. For larger sets of pages, consider
* {@link FragmentStatePagerAdapter}.
*
* <p>When using FragmentPagerAdapter the host ViewPager must have a
* valid ID set.</p>
*
* <p>Subclasses only need to implement {@link #getItem(int)}
* and {@link #getCount()} to have a working adapter.
*
* <p>Here is an example implementation of a pager containing fragments of
* lists:
*
* {@sample development/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentPagerSupport.java
* complete}
*
* <p>The <code>R.layout.fragment_pager</code> resource of the top-level fragment is:
*
* {@sample development/samples/Support4Demos/res/layout/fragment_pager.xml
* complete}
*
* <p>The <code>R.layout.fragment_pager_list</code> resource containing each
* individual fragment's layout is:
*
* {@sample development/samples/Support4Demos/res/layout/fragment_pager_list.xml
* complete}
*/
public abstract class MyFragmentViewAdapater extends PagerAdapter {
private static final String TAG = "FragmentPagerAdapter";
private static final boolean DEBUG = true;
private final FragmentManager mFragmentManager;
public MyFragmentViewAdapater(FragmentManager fm) {
mFragmentManager = fm;
}
/**
* Return the Fragment associated with a specified position.
*/
public abstract Fragment getItem(int position);
@Override
public void startUpdate(ViewGroup container) {
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = getItem(position);
if(!fragment.isAdded()){
FragmentTransaction ft = mFragmentManager.beginTransaction();
ft.add(fragment, fragment.getClass().getName());
ft.commit();
mFragmentManager.executePendingTransactions();
}
if(fragment.getView().getParent() == null){
container.addView(fragment.getView()); // 为viewpager增加布局
}
return fragment.getView();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
private static String makeFragmentName(int viewId, int index) {
return "android:switcher:" + viewId + ":" + index;
}
}
什么是ViewPagerViewPager是v4包中的一个类,继承自...ViewPager经常用来连接Fragment,它能够方便的管理每个页面的生命周期,ViewPager通过适配器管理Fragment,常用的适配器有FragmentPagerAdapter和Fragme...
我们在使用微信或是网易客户端的时候都会看到下面这样的效果,左右滑动切换页面,点击table栏也可以切换界面,以前看着感觉好高大上,今天用ViewPager和Fragment实现了一下,其实还是蛮好实现的 关键点: 1....
ViewPager—视图滑动切换工具——通过手势滑动可以完成View的切换,一般是用来做APP 的引导页或者实现图片轮播——意味着ViewPager中经常放的东西有两个:①图片,实现图片轮播器;②View视图,实...
ViewPager+Fragment实现多个子界面滑动一、设计目标二、实现方法第一步第二步第三步第四步三、实现效果四、源码链接 一、设计目标 最近做了一个智能机器人的控制APP,因为涉及的功能比较多,因此采用了三个可以滑动...
利用 viewPager+fragment 实现分页显示, 效果图: 1. 新建对应Fragment: 自己需要几个就建几个 public class AllOrdersFragment extends Fragment{ private static ...
最近在公司没有什么新的开发任务,就复习一下以前的知识,Android大多数应用都是ViewPager+fragment实现主页面的框架结构,今天就简单的介绍一下ViewPager和fragment的简单使用。 首先看一下activity的布局: ...
1,创建一个ViewPager 2,创建适配器:viewPager.setAdapter(new FragmentPagerAdapter( getSupportFragmentManager()) 3,重写里边的方法 在 getCount() 中返回的是Framgent的个数 在 getItem中条
ViewPager经常用来连接Fragment,它很方便管理每个页面的生命周期,使用ViewPager管理Fragment是标准的适配器实现。最常用的实现一般有FragmentPagerAdapter和FragmentStatePagerAdapter。通过为UI添加ViewPager后,...
今天突然要用到ViewPager和Fragemt来切换界面,之前已经粘得滚瓜烂熟了,但是U盘丢失之后没办法再粘的我变成了一个制杖。。所以决定自己写个博客记录 一下。 首先需要用的的是viewpager控件V4包下的 eclipse可能会不...
Fragment大家肯定不会陌生的,几乎每个App里都有它的存在,作为Google在3.0以后引入的一个概念,极大的解决了Activity(或者说手机屏幕)的局限性,让Activity碎片化,正如它的原意 【分段】,【碎片】一样让一个...
ViewPager和Fragment的结合使用时日常app里经常能碰见的一种用法。
ViewPager是SDK自带的可以控制界面滑动一个控件。现在可以上效果图给大家看看。 效果就是如上图一样,可以左右滑动下面菜单栏可以改变颜色和微信有点相似。 1 布局的介绍 xml
*滑动到第三种的效果图第一步:适配器的创建(就是viewpager的adapter)分析:1,这里有三个函数,根据第一部分的官方文档,可知,对于FragmentPagerAdapter的派生类,只重写getItem(int)和getCount()就可以了。...
1.ViewPager 1.1 在Activity的布局中添加一个ViewPager的控件,这个控件是在v4包中的<android.support.v4.view.ViewPager android:id="@+id/view_pager_vp" android:layout_width="wrap_content" android:layou
重写viewpager中的canScroll方法,如下: @Override protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { if (v != this) { if (v instanceof SwipeItemLayout) { if (dx...
目前大多数的APP都采用的是几个Tab标签以及多个界面滑动的形式来提供多层次的交互体验,最为常用的做法就是采用TabLayout+ViewPager+Fragment的方式,最近在公司项目中遇到类似的界面,也看了各个论坛很多份博客,...
最近一段时间,Android行业大不如从前轻松,企业要求越来越高了,就算入职了很多时候Android这块也不太受重视,现在Android开发者还能经常接到新需求就算是很幸运的事了,我最近的工作也是没什么活,闲来无事就整理...
这是利用安卓的ViewPager和Fragment实现的。上方是LinearLayout中包含三个TextView,下面是ViewPager 我们对LinearLayout中的三个子控件进行监听实现切换ViewPager。 而ViewPager的内容我们利用FragmentPagerAdapt...
之前写了Android ViewPager+Fragment(使用问题处理),封装了一个BaseFragment,对于简单使用ViewPager+Fragment而言,是没有问题的。 不过,ViewPager包含多个fragment,而且fragment使用viewpager再次包含...
Viewpager的滑动监听addOnPageChangeListeneronPageScrolled在viewpager.setAdapter时候就会被调用一次,做业务逻辑的时候要考虑onPageScrolled第一次被调用的情况 onPageScrollStateChanged 有些操作要在页面静止...
(1)、TabLayout + Fragment (2)、FragmentTabHost + Fragment (3)、BottomNavigationView + Fragment (4)、RidioGroup + Fragment 这里我先介绍前面两种实现方式,后面两种后期再贴出实现方式。 一、...
What: 分析卡顿的原因,根据具体需求综合考虑选择合适的解决方案,达到既满足产品需求,又能提高Fragment加载速度,减缓避免...2.频繁加载销毁Fragment:如果默认缓存数量为1或者相对比较少的情况,Viewpager来回...
在做项目时经常会遇到TabLayout、ViewPager和Fragment结合使用,但怎样把选中的Tab的类型传递给Fragment,让Fragment加载不同的数据呢?如果你遇到了这个问题,你可以在本文中得到答案。
这篇文章在我实际项目开发过程中,帮助了我,...如果Fragment需要外部传递参数,在此函数中要构造相关参数。 //传输数据 public static HotFragment newInstance(int osId) { HotFragment f = new HotFragment();
很多文章类的app页面更多的是顶部导航栏滚动,以便加载更多的数据,类似与今日头条图1,图2是咱要做的玩Android公众号页签 图1 图2 话不多说,开始上图2...
用的是viewpager切换,其中一个fragment里面又包裹了两个fragment,这样就形成了fragment viewpager 嵌套 fragment viewpager,一开始外层fragment切换没有问题,当增加里层fragment和viewpager的时候,里层切换出现...
ViewPager 里面的 Fragment 视图中,有一个自定义的滑动View,当用户手指在该自定的滑动View中操作时,会触发左右滑动切换ViewPager。很影响用户体验,本文章教你解决滑动冲突。 直接上代码(复制就能用):...
这两天看到的一些关于ViewPager+Fragment使用的一些文章,都很有价值,于是集中进行一次转载。...Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表; Fragment从出
viewpager+fragment切换fragment的时候会卡顿,布局不复杂,并且没有太多的数据加载
最近在网上看到一篇博客是介绍用ViewPager和Fragment实现tab页面的,adapter使用的是FragmentPagerAdapter,上面只介绍了页面的滑动,我在滑动的同时实现可以通过点击tab按钮实现界面的跳转,就是跟微信上面的一样,...