我用Android Studio的向导新建了一个Tabbed Activity,里面是ViewPager样式的,有三个tabs。如下:

  

  但是我尝试在第一个tab中设置一个按钮,打开其他tab的时候,却提示错误:

  java.lang.IllegalArgumentException: No view found for id 0x7f0c0068 (com.drunkpiano.fragmentlast:id/container) for fragment BlankFragment3{2a5d6e3b #0 id=0x7f0c0068}

  在寻找错误的过程中我首先怀疑的是因为某种原因把position的位置颠倒了,因为我发现,如果在每个fragment(tab)的onCreate()里面加上println,会出现打开第一个fragment却提示第二个fragment的onCreate方法这样错位的情况。。于是我去StackOverFlow上提问了,描述如下:

However when the App runs and the view is in the first tab, I found it actually goes through the onCreateView() function in both Fragment and Fragment2(known from println() in onCreate() & onCreateView()), and when I swipe to Fragment2, it prints Fragment3. and when swipe to Fragment3, it prints nothing.. and after that I swipe back to Fragment2, It prints Fragment1. What's wrong with it?

  结果别人说这是正常的:

Thats is how a FragmentPagerAdapter is supposed to work. It created the Fragment in selected position and also the previous position and next position.

  不过我觉得只有next position,没有previous position。

  并且评论里有人问我,你不读文档的吗。。。好惭愧,同时好想说文档英文看起来好累。。而且其实我是读了文档的,里面似乎并没有提到预先加载view这一点。http://developer.android.com/referenceh/android/support/v4/app/FragmentPagerAdapter.html

  然后我怀疑是container的问题了,还是搞不懂,就又去提了个问题,链接

  评论里有人让我参考另一个问题,这个问题里题主也遇到类似情况,不过我的问题从他的题干中就能找到答案,也就是container不应该是整个ViewPager的container,而应该是当前fragment的container。我试了一下,确实可以跳转。但是跟普通fragment之间跳转不同的是,下一个fragment的界面只是覆盖在了当前界面上,我又使用了setVisibility(View.GONE)才将当前fragment的控件隐藏,我觉得这应该也是跟viewPager预读next position有关。

  我的问题似乎是解决了,但是http://stackoverflow.com/questions/7723964/replace-fragment-inside-a-viewpager中的问题我还没有完全理解。明天看看。

  View里面细节真多。

  03/22/2015

  

在Tabbed Activity(ViewPager)中切换Fragment的更多相关文章

  1. 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析   1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3   2.Fragment生命周期以及与Activ ...

  2. 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析  原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...

  3. ViewPager中切换界面Fragment被销毁的问题

    ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周期进行 ...

  4. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期

    Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...

  5. Tabbed Activity的使用(Fragment)

    1,首先file -> new -> Activity -> Tabbed Activity 2,创建完成后,发现会自动的创建一大堆代码,大部分我们是不需要关心的,关于页面切换的代码 ...

  6. 动态更新ViewPager中的Fragment(替换Fragment)

    1.最近做需求,遇到一个问题,一个Fragment中包含了一个ViewPager,viewPager中包含一adapter ,adapter中包含了4个Fragment.想要动态替换第3个Fragme ...

  7. 防止ViewPager中的Fragment被销毁的方法,更加流畅

    在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图: 当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以 ...

  8. (转)防止ViewPager中的Fragment被销毁的方法

    在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图: 当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以 ...

  9. viewpager中对fragment的操作

    XXAdatper xxAdapter = (XXAdatper)viewpager.getAdapter(); XXFragment  xxFragment= (XXFragment )adapte ...

随机推荐

  1. PropertiesTest

    import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public clas ...

  2. Web前端开发--JS技术大梳理

    什么是JS      JavaScript是一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语 ...

  3. springboot 项目中控制台打印日志以及每天生成日志文件

    1.控制台打印sql语句 只要在application.properties 中加入<configuration  scan="true" scanPeriod=" ...

  4. x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*()

    x264代码剖析(十三):核心算法之帧间预測函数x264_mb_analyse_inter_*() 帧间预測是指利用视频时间域相关性,使用临近已编码图像像素预測当前图像的像素,以达到有效去除视频时域冗 ...

  5. 渐变背景(background)效果

    chrom and Safari浏览器: webkit核心的浏览器.使用CSS3渐变方法(css-gradient) -webkit-gradient(type, start_point, end_p ...

  6. mongodb distinct去重

    MongoDB的destinct命令是获取特定字段中不同值列表.该命令适用于普通字段,数组字段和数组内嵌文档. mongodb的distinct的语句: db.users.distinct('last ...

  7. 用HttpClient模拟HTTP的GET和POST请求(转)

    本文转自:http://blog.csdn.net/xiazdong/article/details/7724349 一.HttpClient介绍   HttpClient是用来模拟HTTP请求的,其 ...

  8. 在diy的文件系统上创建文件的流程

    [0]README 0.1) source code are from orange's implemention of a os , and for complete code , please v ...

  9. JAVA学习第五十二课 — IO流(六)File对象

    File类 用来给文件或者目录封装成对象 方便对文件与目录的属性信息进行操作 File对象能够作为參数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo( ...

  10. 解决UICollectionView的Cell复用引起的布局混乱问题

    解决UICollectionView的Cell复用引起的布局混乱问题   问题复现.gif 查了一下度娘发现没有好的解决办法,于是发动自己的聪明才智,终于找到如下解决办法(充分证明了自己动手丰衣足食啊