具有相同id的视图的三个片段导致奇怪的行为

时间:2013-05-07 06:47:25

标签: android

我创建了一个显示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);

1 个答案:

答案 0 :(得分:1)

当您使用getSherlockActivity().findViewById()时,它会返回您从整个视图层次结构中提供ID的第一个视图,因此它可能不是您当前在屏幕上看到的评级栏。

你可以用一些不同的视图ID创建3个不同的片段,这会有所帮助。您还可以修改逻辑并调用方法来更改当前显示的片段的评级栏。

祝你好运!