所以我一直在玩片段,我很喜欢使用Log.d查看方法的输出,以便更好地理解。
我正处于使用findFragmentById的地步。
当我使用这些Log.d语句时:
Log.d("APPTAG", "Fragment: "+ getSupportFragmentManager().findFragmentById(R.id.pager));
Log.d("APPTAG", "Fragment is visible : "+ getSupportFragmentManager().findFragmentById(R.id.pager).isVisible());
我得到了这些结果:
APPTAG﹕ Fragment: FragmentTwo{52742bec #1 id=0x7f070077 android:switcher:2131165303:1}
APPTAG﹕ Fragment is visible : true
因此,我理解这一点的方法是,为了获得流畅的用户体验,我们会创建当前片段以及上一个和下一个片段,以便在它们之间平滑过渡。
我正在使用this教程来设置它。 我有3个片段,只有片段1有一个按钮,调用方法来使用log.d语句。
对于那些不想看链接的人。我正在使用ViewPager和FragmentPagerAdapter来创建片段。
问题:
由于
答案 0 :(得分:0)
有人可以向我解释为什么我没有得到片段1的值?
我假设通过"片段1"你的意思是ViewPager中的第一页。
您的陈述:
getSupportFragmentManager().findFragmentById(R.id.pager)
返回寻呼机本身的片段,而不是ViewPager内的页面片段。请注意您传入findFragmentById - R.id.pager的论点。这是寻呼机本身的ID。
如果可能,我该如何获得它们?
可以访问ViewPager的页面片段。一种解决方案是通过覆盖instantiateItem()和destroyItem()来维护适配器内当前片段的集合。有一个完整的解决方案here。
为什么当我得到片段2的值时,它会说当片段1当前处于视图/屏幕上时片段2是可见的?
我不会想到"片段二"指的是ViewPager中的任何页面 - 它指的是ViewPager本身所在的片段。