checkboxpreference android 或 listpreference 的依赖项中的多重依赖项
例如:我的首选项屏幕中有三个复选框,每个复选框有 3 个不同的 listpreference(A,B,C)
。我想让用户一次只选择一个复选框。我该如何实现这一目标?
首选项屏幕中没有单选按钮
如果可以使用的话,我无法使用 Listpreference
<前><代码>列表首选项 android:key="livewallpaper_testpattern" android:title="@string/livewallpaper_settings_title" android:summary="@string/livewallpaper_settings_summary" android:entries="@array/livewallpaper_testpattern_names" android:entryValues="@array/livewallpaper_testpattern_prefix"
这个 Listprefrence 的数组是“蓝色”,“红色”,“白色”
如果是蓝色的 ListPreference A 取决于蓝色
如果是红色的 ListPreference B 取决于红色
如果是白色的 ListPreference C 取决于白色
我该怎么做?
我在谷歌上搜索了 3-4 页,这里几乎有关于这些的所有内容,但我找不到任何答案。
最好的问候,
提前感谢..
For example: i have three checkboxes in my preference screen and there is 3 different listpreference(A,B,C)
depended on each checkbox. i want to make the user select only one checkbox at a time. How do i achieve this?
There is no radio button in preference screen
I can not use Listpreference , if i can use it
ListPreference android:key="livewallpaper_testpattern" android:title="@string/livewallpaper_settings_title" android:summary="@string/livewallpaper_settings_summary" android:entries="@array/livewallpaper_testpattern_names" android:entryValues="@array/livewallpaper_testpattern_prefix"
Array of this Listprefrence is "blue"," red", "white"
if it is blue
ListPreference A depends on blueif it is red
ListPreference B depends on redif it is white
ListPreference C depends on white
How can i do this?
i searched 3-4 pages in google and here almost everything about these but i could not find any answer.
Best Regards,
Thanks in advance..
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以在
PreferenceActivity
类中重写onSharedPreferenceChanged
并以编程方式启用/禁用相应的首选项:You can override
onSharedPreferenceChanged
in yourPreferenceActivity
class and enable/disable appropriated Preferences programmatically:另一种方法是创建一个抽象帮助器类。它使用反射来访问
registerDependent()
方法,遗憾的是该方法是Preference
类私有的:然后扩展您的
checkboxPreference
或任何其他类,如下所示:最后,您可以像这样使用新的首选项:
Post Scriptum:
如果您不想使
MultiDependecies
类抽象并重写findPreferenceInHierarchy
函数,则可以使用反射:Another way is to create an abstract helper class. It uses reflection to access the method
registerDependent()
which sadly is private to thePreference
class:Then extend your
checkboxPreference
or any other class as follows:Finally, you can use your new preference like this:
Post Scriptum:
If you don't want to make the
MultiDependecies
class abstact and override thefindPreferenceInHierarchy
function, you can use reflection: