在运行时生成资源ID?

时间:2010-10-30 13:33:21

标签: android

我正在使用搜索栏编写自定义首选项,到目前为止它有效,除了一个问题我的搜索栏的ID是用XML定义的,所以当我尝试使用2个自定义偏好然后我更新寻求吧我无法区分这两者。

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

有没有办法在运行时生成自定义资源ID? 或者或许另一种解决方法?

谢谢, 杰森

2 个答案:

答案 0 :(得分:1)

  

在自定义首选项的onBind ovverriden方法中,您将传递一个View视图,其中包含有关当前首选项活动的所有视图。

onBind()上没有Preference方法。 onBindView()方法。但是,传递给View的{​​{1}}是您从onBindView()返回的View,或者是您指定的布局文件中的onCreateView()。这不是整个活动。

确保您在为View创建的小部件上调用findViewById(),而不是更广泛的内容。

另外,请注意PreferencePreferenceActivity。如果您的自定义ListActivity滚出屏幕,其Preference可能会被移至您自定义View的另一个实例进行回收。

答案 1 :(得分:1)

为了未来的利益:

使用setTag()标记您的视图,并使用findViewWithTag()引用它;

来源:Inflate a TableRow