android viewpagerr怎么让里面的fragment的生命周期

怎么替换viewpager里面的fragment_百度知道
怎么替换viewpager里面的fragment
我有更好的答案
按默认排序
叫替换用fragmentpageradapter
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁为什么我会想'setRetainInstance(假)`?-或-正确的方法来处理旋转装置
请如果我错了任何这一点。这是一种澄清的问题,因为我还没有看到它明确地写入任何地方。
在Android中4,你可以调用setRetainInstance(true)上一个Fragment使对配置更改(哪个设备旋转),则Fragmentjava对象不被破坏,而不是创建它的一个新的实例。也就是说,该实例将被保留。
这是更为明智的,比在1-3的Android真气少 CodeGo.net,因为你没有处理onRetainNonConfigurationStateInstance()并绑定了所有的数据,因此它可以被传递到新Fragment(或Activity)实例只有到再分解开来。它基本上是你所expect发生的,按理说应该如何已经工作了ActivityS来自开始。
同setRetainInstance(true)该视图也重新创建(onCreateView()被称为)在旋转,你会expect。我(未测试)该资源的分辨率(layout与layout-land)的作品。
所以我的问题是双重的:
为什么没有像这样用Activities从一开始。
为什么这不是默认的?是否有过任何原因,你实际上会想你的Fragment被无谓破坏并重新创建轮换?我想不出任何。
为了澄清我会怎么做:
class MyFragment extends Fragment
// All the data.
String mDataToD
// All the views.
TextView mViewToDisplayItIn;
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setRetainInstance(true);
mDataToDisplay = readFromSomeFileOrWhatever(); // Ignoring threading issues for now.
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
return inflater.inflate(R.layout.my_fragment, container, false);
public void onViewCreated(View view, Bundle savedInstanceState)
// At this point if mViewToDisplayItIn was not null, the old one will be GC'd.
mViewToDisplayItIn = view.findViewById(R.id.the_text_view);
mViewToDisplayItIn.setText(mDataToDisplay);
// Optionally:
public void onDestroyView()
// All the view (and activity) to be GC'd.
mViewToDisplayItIn =
本文地址 :CodeGo.net/505208/
-------------------------------------------------------------------------------------------------------------------------
1. 使对配置更改(哪个设备旋转)
和改变区域,改变SIM卡,更改默认字体大小,插入或移除外接键盘,把设备在jetty或等中取出
你不必处理onRetainNonConfigurationState()
这是onRetainNonConfigurationInstance()。
绑定了所有的数据,因此它可以被传递到新的(或活动)的实例只能再分解开来
您的数据应该已经被“绑定”(私有静态内部类的如实例),因此它不会需要被“绑定”或“分拆”。此外 CodeGo.net,经常不应该是“所有的数据”,除非你是一个球迷泄漏。
我(未测试)该资源的分辨率(布局与布局,土地)的作品。
是否有过任何原因,你实际上希望你被无谓破坏并重新创建轮换?
当然可以。
正如你注意到,所有的部件都是重新创建,所以绑部件不仅没有保留的必要。除非您特别重设那些null在保留到onCreateView()再次被调用时,那些会守住旧部件,这将守住老活动实例,这将防止老年活动实例被垃圾收集。 AFAIK,onCreateView()是不会被调用,直到将要重新显示,这可能不是相当(该是在新的方向,或者是页面的ViewPager访问了在旧的方向,但不会重新在新的方向等)。该保留的可能保持周围的老年活动对象根据什么该活动可能已经扶住(例如,大的相当长时间Bitmap对象),这可能是坏的。
同样,它本身就会保存大量的数据,其中可能会或可能不会在配置更改后,是一个不应该被保留。
此外,还有将是根本没有什么需要被保留(例如,所有的数据都通过填充Loaders,这是已经知道的配置更改,并适当地处理它们)。
被不保留默认是最安全的操作过程中,对于垃圾回收的问题。你可以选择到具有被保留,但随后的是你要确保你是不是做了拧自己。
我不知道该如何回答优先个问题。它应该是这样的从一开始。我想在谷歌以为他们真的与此
第二个问题,但是,要容易得多。这是不是默认这不是Android的发展已经学会了期待。 Android的发展知道在旋转的实例死亡,并expect它。更改默认会作出很多开发商真的生气了。
本文标题 :为什么我会想'setRetainInstance(假)`?-或-正确的方法来处理旋转装置
本文地址 :CodeGo.net/505208/
Copyright (C) 2014 CodeGo.net 沪ICP备号 联系电邮: (#=@)【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别 - 推酷
【Android界面实现】FragmentPagerAdapter与FragmentStatePagerAdapter使用详解与区别
转载请注明出处:
FragmentPagerAdapter是android-support-v4支持包里面出现的一个新的适配器,继承自PagerAdapter,是专门用来给支持包中出现的ViewPager进行数据适配的。
PagerAdapter在之前的文章中进行过简单的介绍,不记得怎么使用的可以先去看一下。
FragmentPagerAdapter,见名知意,这个适配器就是用来实现Fragment在ViewPager里面进行滑动切换的,因此,如果我们想实现Fragment的左右滑动,可以选择ViewPager和FragmentPagerAdapter实现。
FragmentPagerAdapter拥有自己的缓存策略,当和ViewPager配合使用的时候,会缓存当前Fragment以及左边一个、右边一个,一共三个Fragment对象。
假如有三个Fragment,那么在ViewPager初始化之后,3个fragment都会加载完成,中间的Fragment在整个生命周期里面只会加载一次,当最左边的Fragment处于显示状态,最右边的Fragment由于超出缓存范围,会被销毁,当再次滑到中间的Fragment的时候,最右边的Fragment会被再次初始化。
在当前版本来说,最适合用来做固定的较少数量的场合,比如说一个有3个tab标签的fragment滑动界面。FragmentPagerAdapter会对我们浏览过Fragment进行缓存,保存这些界面的临时状态,这样当我们左右滑动的时候,界面切换更加的流畅。但是,这样也会增加程序占用的内存。如果应用场景是更多的Fragment,请使用FragmentStatePagerAdapter。
当我们使用FragmentPagerAdapter的时候,它的宿主ViewPager必须有一个id。
如果要使用FragmentPagerAdapter,我们需要实现2个方法,如下所示。
FragmentPagerAdapter adapter = new FragmentPagerAdapter(
getSupportFragmentManager()) {
public int getCount() {
return fragments.size();
public Fragment getItem(int position) {
return fragments.get(position);
getCount()返回的是ViewPager页面的数量,getItem()返回的是要显示的fragent对象。
除了FragmentPagerAdapter之外,还有一个类也是专门实现ViewPager的Fragment的数据适配的,叫做FragmentStatePagerAdapter。
FragmentStatePagerAdapter是PagerAdapter的子类,这个适配器对实现多个Fragment界面的滑动是非常有用的,它的工作方式和listview是非常相似的。当Fragment对用户不可见的时候,整个Fragment会被销毁,只会保存Fragment的保存状态。基于这样的特性,FragmentStatePagerAdapter比FragmentPagerAdapter更适合用于很多界面之间的转换,而且消耗更少的内存资源。
同样的,宿主VIewPager也必须有一个id。
如果要使用FragmentStatePagerAdapter,我们需要实现2个方法,getCount()返回的是ViewPager页面的数量,getItem()返回的是要显示的fragent对象。使用方法和FragmentPagerAdapter完全一样。
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见当用viewpager加载fragment时 会跑完当前 上一个已及下一个item(fragment)的生命周期 而不是在加载的时候在去跑
而在fragment上跳转activity时 会调用当前上一个已及下一个item(fragment)onPause 返回时调用onStop& 然后在把当前上一个已及下一个item(fragment)的生命周期 在跑一次
&&&&&&& viewpager显示fragment的时候不会仅仅显示展现的那个fragment,而是将前一个,后一个,和正在显示的fragment的生命周期都跑一遍。
(已下资料源于)
判断当前fragment是否显示在屏幕上 在setUserVisibleHint这个方法上做处理
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
&span style=&color:#33FF33;&&//相当于Fragment的onResume&/span&
&span style=&color:#33FF33;&&
//相当于Fragment的onPause&/span&
& 解释:通过阅读ViewPager和PageAdapter相关的代码,切换Fragment实际上就是通过设置setUserVisibleHint和setMenuVisibility来实现的,调用这个方法时并不会释放掉Fragment(即不会执行onDestoryView)。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:551次
排名:千里之外
转载:13篇
(5)(16)(1)15:33:39【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"如何在 ViewPager 中获取当前可见fragment的实例"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"如何在 ViewPager 中获取当前可见fragment的实例"相关的详细问题如下:RT,我想知道:如何在 ViewPager 中获取当前可见fragment的实例===========突袭网收集的解决方案如下===========
解决方案1:ViewPage可以设置OnPageChangeListener重写onPageSelected()方法,这个就是当前显示的item的index。 你可以通过这个index来从你的数据中获取你的fragment实例
================可能对您有帮助================
总得一句话要重写onTouchEvent1.手势滚动有很多方法:可用viewpager实现view的左右滑屏,也可以用ViewFlipper,还有笨方法就是一个imageview,获取按下抬起坐标,判断左滑右...===========================================没吧错误的LOG贴出来,你只这样说谁有不是神仙哪里知道啊,再说你还确保了你的程序是对的,叫人怎么说!!!!===========================================建一个imagerView布局文件, 在异步AsyncTask里面进行下载,下载完成一个就向viewpager.addview(imagervew);===========================================先定位到相应的页卡,比如你有3个页卡分别是View1,View2,View3。
那么你要走在View1中添加就这样写
RelativeLayout insertLayout = (RelativeLayout)View1.findViewById(R...===========================================我也遇到同样的问题 我是将那个页面转换成一个activity实现的 但是后期操作还有很多的麻烦 现在还在寻找好的解决方案 ,===========================================1.可以在走后一页添加一个Button或者imageVIew(开始之类的话),点击button你相应的跳入到主页面去 通过intent (目前很多应用采用的是这种)===========================================跟ViewPager没有关系。对图片的操作是ImageView,用Matrix来对图片进行旋转、缩放、平移等操作,查查Matrix和ImageView的相关内容。===========================================现在做了个应用,Viewpager很让人纠结,我有四个屏幕,左右滑动没有问题,可是由第一屏目到第四屏幕,中间会经过2,3屏幕,界面看起来很难看,怎么才能不执行这动画呢,期待解决...===========================================第一次启动应用时先启动介绍应用的activity,布局里用viewpager,然后在最后一页弄个监听,可以跳转到你的主页面,然后你还可以在menu里加个应用介绍什么的可以跳到这个介绍...===========================================这个是viewpager自己设定好的,我记得是会保留当前fragment相邻的左边(如果有)和右边(如果有)的fragment,其他的就会自动执行destroy,需要的时候会自动creat的。这个不用自...===========================================
12345678910

我要回帖

更多关于 viewpager 禁止滑动 的文章

 

随机推荐