在ViewPager中对不同片段使用相同布局时,将布局值相互混合

时间:2013-04-27 18:04:44

标签: android android-layout android-fragments android-viewpager

在我的Android应用程序中,有两个名为FragmentAFragmentB的片段。我使用ViewPager将两个片段添加到FragmentAdapter所以当我运行应用程序时,我得到一个意外的布局(两个片段布局混合在一起)。每当我尝试通过滑动更改currentItem ViewPager时,布局会相互混合。

我的问题:如果我们对ViewPager中的不同片段使用相同的布局,会有任何问题吗?

1 个答案:

答案 0 :(得分:2)

我找到了答案 如果使用getView() Fragment函数来引用片段的当前根视图,则没有问题。这样您就可以在Fragment中获得精确的观点。您可以这样使用(getView().findViewByid(...);
但是如果使用活动引用来引用片段中的视图,则会出现问题。因为使用相同布局xml的每个片段中的所有视图都具有相同的id。因此,如果您更改片段中视图的值,该片段将反映在ViewPager中使用相同布局的其他片段中。
还有一件事,想想这样,当活动创建时,所有此活动的ViewPager中的片段也将创建并在后台运行。因此,如果您更改视图的值,an​​droid将返回具有相同ID的第一个视图。 Android只知道视图的ID。所以总是使用它的根视图(getView())来引用片段的视图。