2010-10-30 30 views
0

我寫了搜索欄的自定義偏好,到目前爲止,它的工作原理,但有一個問題,我的搜索欄的ID被定義在XML中,所以當我嘗試使用我的自定義prefernces 2,然後我更新求酒吧我無法區分這兩者。運行時的Generte資源ID?

SeekBar bar = (SeekBar)view.findViewById(R.id.PreferenceSeekBar); 

有沒有辦法在運行時生成自定義資源ID? 或者也許解決這個問題的另一種方法?

感謝, 傑森

+1

什麼是你的代碼清單中的'view'? – CommonsWare 2010-10-30 14:45:36

+0

@CommonsWare:在自定義首選項的onBind ovverriden方法中,傳遞一個View視圖,其中包含當前首選項活動的所有視圖。 – Jason 2010-10-30 16:16:47

回答

1

定製偏好的onBind ovverriden方法,你傳遞一個View視圖,其中包含對當前優先活動各方面的意見。

Preference沒有onBind()方法。有onBindView()方法。但是,傳遞給onBindView()View是什麼ViewonCreateView()返回,或從您指定的佈局文件充氣View,如果你去這條路線。這不是整個活動。

確保您在爲您的Preference創建的小部件上調用findViewById(),而不是更廣泛的範圍。

另外,請記住,PreferenceActivityListActivity。如果您的自定義Preference滾出屏幕,其View可以切換到您的自定義Preference回收的另一個實例。

+0

是的,我知道即使考慮到我得到的影響是當我只移動一個Seek Bars時,它們都在移動。考慮到傳遞給我的視圖沒有任何意義,它不包含兩個搜索欄 – Jason 2010-10-30 17:22:18

+0

@Jason:這個問題聽起來很熟悉,但我不記得解決方案。 – CommonsWare 2010-10-30 17:52:09

+0

恥辱,如果我創建了一個習慣prefernce類的副本並使用它 - 它解決了它,提示混合引用但我找不到任何內容,我一直在這裏徘徊一段時間。 – Jason 2010-10-30 20:53:46

1

,造福未來來者不拒:

標籤與setTag(視圖),並引用其與findViewWithTag baack();

來源:Inflate a TableRow