gpt4 book ai didi

android - 根据 SDK 版本动态加载首选项

转载 作者:行者123 更新时间:2023-11-30 03:40:20 25 4
gpt4 key购买 nike

我的 Android 应用程序中有一个 PreferenceActivity,用于显示设置屏幕。我想在其中添加一个“MultiSelectListPreference”,但我遇到了一个问题,它在 API11 之前的 android 版本上不起作用,因为它是在 API11 中引入的。没问题,我通过两种 xml 布局解决了这个问题,一种是“MultiSelectListPreference”驻留在 res/xml-v11 中,另一种只有“Preference”驻留在 res/xml 中,我使用自定义对话框处理。

res/xml-v11 中的 xml 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="time"
android:persistent="false"
android:title="@string/time" />
<MultiSelectListPreference android:key="days_multi"
android:persistent="false"
android:title="@string/days" />
<ListPreference android:key="action"
android:persistent="false"
android:title="@string/action" />
</PreferenceScreen>

res/xml 中的那个看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="time"
android:persistent="false"
android:title="@string/time" />
<Preference android:key="days_dialog"
android:persistent="false"
android:title="@string/days" />
<ListPreference android:key="action"
android:persistent="false"
android:title="@string/action" />
</PreferenceScreen>

如您所见,唯一不同的是列表中的第二个元素,其余完全相同。有没有更好的方法来处理这个问题以在一个文件中重用相同的代码并动态引用剩余的部分,具体取决于 Android 版本?理想的解决方案看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference android:key="time"
android:persistent="false"
android:title="@string/time" />
<Preference source="days.xml" />
<ListPreference android:key="action"
android:persistent="false"
android:title="@string/action" />
</PreferenceScreen>

虽然我也会在 res/xml-v11 和 res/xml 下有名为 days.xml 的文件,其中包含不同的部分。

我在文档中和在 StackOverflow 上搜索后找不到任何相关内容。 android是否提供了一种方法来做到这一点?或者也许还有其他一些方法可以分解出通用代码?

最佳答案

我想到的是使用类似 <include/> 的东西标签。似乎您不能在首选项 xml 中使用它,但您可以分部分创建您的首选项。所以你需要在你的 PreferencesActivity 中创建首选项像这样(其中 R.xml.prefs_days 是您的版本特定文件,有 2 个版本):

addPreferencesFromResource(R.xml.prefs_time);
addPreferencesFromResource(R.xml.prefs_days);
addPreferencesFromResource(R.xml.prefs_action);

Nested preferences.xml

关于android - 根据 SDK 版本动态加载首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com