Android通过id log.d输出查找片段

时间:2014-07-06 02:02:35

标签: android android-fragments

所以我一直在玩片段,我很喜欢使用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来创建片段。

问题:

  1. 有人可以向我解释为什么我没有得到这些值 片段一?
  2. 如果可能,我该如何获得它们?
  3. 为什么在第一次启动时,当片段1当前在视图/屏幕上时,我获得片段2的值(id信息并且可见)?
  4. 由于

1 个答案:

答案 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本身所在的片段。

相关问题