2013-05-07 46 views
0

我已經創建了一個viewpager,它顯示了3個相似的片段。這些片段具有相同的佈局,並且這些佈局中的視圖具有相同的ID(例如:DetailedPowerFragment中的RatingBar具有id詳細的評級條,並且DetailedWaterFragment中的RatingBar也是如此)三個片段的視圖具有相同的ID導致奇怪的行爲

但是,當我嘗試設置RatingBar與findViewById分別在每個片段中似乎找到了不同的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

不確定要在這裏明白,爲什麼你創建了3次相同的佈局?爲什麼不創建只有一個和使用它的3個片段? – 2013-05-07 06:53:37

回答

1

當您使用getSherlockActivity().findViewById()它會返回第一個視圖機智提供從整體視圖層次的ID,所以它可以不是那些評級吧,你現在在屏幕上看到。

你可以創建3個不同的片段與一個不同的視圖id,這將有所幫助。您也可以修改您的邏輯並調用方法來更改當前顯示片段的評級欄。

祝你好運!

+0

謝謝。我不知道。但是,如果我只想改變評級欄而不是每次改變視圖時?似乎每次顯示新片段時都會調用方法來更改評級欄。 – CodePrimate 2013-05-07 07:33:53

+0

@litemode如果你想同步你的評級欄,可能你應該將其從ViewPager移出到父級的佈局,並且只使用一個評級欄,而不是3個片段中的3個不同欄。我不知道你想創建什麼佈局,所以很難給你100%的解決方案。 – Evos 2013-05-07 11:06:30