我创建了一个显示3个相似片段的viewpager。这些片段具有相同的布局,并且这些布局中的视图具有相同的ID(例如:DetailedPowerFragment中的RatingBar具有id detailedRatingBar,DetailedWaterFragment中的RatingBar也是如此)
但是,当我尝试在每个片段中单独使用findViewById设置RatingBar的值时,似乎找到了不同的RatingBar。
所以
final RatingBar ratingBar = (RatingBar)getSherlockActivity().findViewById(R.id.ratingBar);
ratingBar.setEnabled(false);
在DetailedWaterFragment中,会在DetailedPowerFragment中设置RatingBar。如果相关,您将在下面看到创建viewpager的代码 - 但是导致此问题的原因是什么?我是否需要为我的所有观点提供新的ID以确保不会发生这种情况?
detailedFragments = new ArrayList<SherlockFragment>();
detailedFragments.add(new DetailedPowerFragment());
detailedFragments.add(new DetailedHeatFragment());
detailedFragments.add(new DetailedWaterFragment());
mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), detailedFragments);
mViewPager.setAdapter(mMyFragmentPagerAdapter);
答案 0 :(得分:1)
当您使用getSherlockActivity().findViewById()
时,它会返回您从整个视图层次结构中提供ID的第一个视图,因此它可能不是您当前在屏幕上看到的评级栏。
你可以用一些不同的视图ID创建3个不同的片段,这会有所帮助。您还可以修改逻辑并调用方法来更改当前显示的片段的评级栏。
祝你好运!