有没有办法为每个主题设置首选项defaultValue?

时间:2013-11-07 09:54:01

标签: android android-preferences android-theme

我的应用程序中有几个主题针对不同的客户,并希望为每个主题设置不同的android:defaultValue。在我的例子中,这是为了设置不同的默认主机。

我尝试使用attibutes和Themes设置它但我无法实现它。

在attrs.xml中定义属性:

  <attr name="settings_host" format="reference" />

res / values中的settings.xml文件中不同默认值的定义:

  <string name="settings_host_1">my.host1.net</string>
  <string name="settings_host_2">my.host2.net</string>

选择themes.xml中的默认值:

  <style name="MyTheme" parent="@style/ApplicationTheme">
    <item name="settings_host">@string/settings_host_1</item>

首选项中的Seth defaultValue:

  <EditTextPreference
      android:name="Host"
      android:defaultValue="@attr/settings_host"
      android:key="@string/settings_tag_mw_host"
      android:summary="@string/act_settings_host_summary"
      android:title="@string/act_settings_host" />

我也试过了:

      android:defaultValue="?settings_host"

不幸的是,这不起作用,我的默认值始终为空。我做错什么了吗?还有另一种方法来实现我的目标吗?

文档说明有可能: Preference

android:defaultValue

...

可以是“@ [+] [package:] type:name”形式的另一个资源的引用,也可以是“?[package:] [type:] name”形式的主题属性的引用

1 个答案:

答案 0 :(得分:0)

我错了,我在xml-v14中有第二个首选项文件,我忘记使用新属性进行编辑。由于我的测试设备版本足够新以使用此第二个首选项,因此默认值保持为空。

问题中描述的解决方案有效。