我在我的android应用程序中有一个PreferenceActivity,用于显示设置屏幕。我想在其中有一个“MultiSelectListPreference”,但我遇到了一个问题,它不适用于API的pre-API11版本,因为它已在API11中引入。 没问题,在那里,我有两个xml布局,其中一个带有位于res/xml-v11中的“MultiSelectListPreference”,另一个带有“Preference”驻留在res/xml中,我使用自定义对话框处理。根据SDK版本动态加载首选项
在水库中的XML文件/ XML-V11看起来是这样的:
<?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>
正如你所看到的,只有differense是列表中的第二个元素,其余部分完全相同。有没有更好的方法来处理这个问题,以便在一个文件中重复使用相同的代码并根据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和包含一块是不同的RE/XML称为days.xml。
我在文档中找不到与StackOverflow相关的任何内容。 Android提供了一种方法来做到这一点?或者也许有其他方法来分解通用代码?
这正是我发布这个问题后认为正确的做法: )它确实对我有用。但是我可以在这里看到sevaral的缺点,即如果它们分布在多个文件中,如何将多个首选项包装到PreferenceCategory中? – 2013-04-06 02:59:47
好的问题,这是超出我的领域的知识领域,因为我没有以这种更先进的方式使用它们。 – 2013-04-06 03:03:41