Android 运行时的Generte资源ID?
我正在用搜索栏编写一个自定义首选项,到目前为止它还可以工作,除了一个问题,我的搜索栏的ID是用XML定义的,所以当我尝试使用2个自定义首选项,然后更新搜索栏时,我无法区分这两个Android 运行时的Generte资源ID?,android,Android,我正在用搜索栏编写一个自定义首选项,到目前为止它还可以工作,除了一个问题,我的搜索栏的ID是用XML定义的,所以当我尝试使用2个自定义首选项,然后更新搜索栏时,我无法区分这两个 SeekBar bar = (SeekBar)view.findViewById(R.id.PreferenceSeekBar); 有没有办法在运行时生成自定义资源ID? 或者另一种解决方法 谢谢, 杰森 在自定义首选项的onBind-ovverriden方法上,会向您传递一个视图,其中包含当前首选项活动的所有视图 首
SeekBar bar = (SeekBar)view.findViewById(R.id.PreferenceSeekBar);
有没有办法在运行时生成自定义资源ID?
或者另一种解决方法
谢谢,
杰森
在自定义首选项的onBind-ovverriden方法上,会向您传递一个视图,其中包含当前首选项活动的所有视图
首选项上没有onBind()
方法。有一个onBindView()
方法。但是,传递给onBindView()
的视图是从onCreateView()
返回的任何视图,或者如果您按该路线进行操作,则从指定布局文件膨胀的视图。这不是整个活动
确保您正在为您的首选项创建的小部件上调用findViewById()
,而不是范围更广的小部件
另外,请记住,首选项活动
是一个列表活动
。如果您的自定义首选项
从屏幕上滚下,其视图
可能会被交给您的自定义首选项的另一个实例
进行回收。为了未来的参与者:
使用setTag()标记视图,并使用findViewWithTag()引用它
来源:您的代码列表中的视图是什么?@commonware:在自定义首选项的onBind-ovverriden方法上,您被传递了一个视图,其中包含当前首选项活动的所有视图。是的,即使考虑到我受到的影响,我也知道当我只移动一个搜索栏时,两个搜索栏都在移动。考虑到传递给我的视图不包含两个seek,这是没有意义的bars@Jason:这个问题听起来很熟悉,但我不记得解决方案。不好意思,我已经为此绞尽脑汁了一段时间,如果我创建一个自定义首选项类的副本并使用它-它解决了它,建议混合引用,但我找不到任何引用。