0

我的应用程序中有几个主题适用于不同的客户,并且想android:defaultValue为每个主题设置不同的主题。在我的情况下,这是为了设置不同的默认主机。

我尝试使用属性和主题来设置它,但我无法实现。

在 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>

在首选项中设置 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"

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

文档说这是可能的: 偏好

android:defaultValue

...

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

4

1 回答 1

0

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

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

于 2013-11-07T10:32:51.570 回答