0

我创建了一个显示 3 个相似片段的 viewpager。这些片段具有相同的布局,并且这些布局中的视图具有相同的 id(例如:DetailedPowerFragment 中的 RatingBar 具有 id detailRatingBar,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);
4

1 回答 1

1

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

是的,您可以创建 3 个具有不同视图 ID 的不同片段,这将有所帮助。您也可以修改您的逻辑并调用方法来更改当前显示片段的评分栏。

祝你好运!

于 2013-05-07T06:54:15.380 回答