【问题标题】:Android strings, Should I use strings.xml or java stringsAndroid 字符串,我应该使用 strings.xml 还是 java 字符串
【发布时间】:2015-03-20 16:04:13
【问题描述】:

我是 android 编程的新手,在我编写的应用程序中,有些部分需要从共享偏好中获取数据,这些偏好设置在偏好活动中。 现在,偏好活动主要是用 XML 编码的,包括首选项键,并且应用程序在 Java 代码中获取这些数据。到目前为止,一切都很好。 问题在于拼写错误,假设我在 XML 中编写“Settings1”,在 Java 中编写“settings1”,我可能会烧掉所有的想法,但我不会看到。为避免这种情况,我将字符串保存在 java 类中,并使用相同的字符串保存在 XML 资源文件中。但还是同样的问题。

<resources>
   <string name="SETTINGS1">Settings1</string>
</resources>

class Keys {
   public static final String SETTINGS1 = "Settings1";
}

<SwitchPreference
    android:key="@string/SETTINGS1" />

if(sharedPref.getBoolean(Keys.SETTINGS1, true)){ doSomething(); }

但我只想写一次键值,所以我想出了两个可能的解决方案。 第一个:

<resources>
   <string name="SETTINGS1">Settings1</string>
</resources>

class Keys {
   public static final String SETTINGS1 = resources.getString(R.string.SETTINGS1);
}

<SwitchPreference
    android:key="@string/SETTINGS1" />

if(sharedPref.getBoolean(Keys.SETTINGS1, true)){ doSomething(); }

或者:

<resources>
   <string name="SETTINGS1">Settings1</string>
</resources>

<SwitchPreference
    android:key="@string/SETTINGS1" />

if(sharedPref.getBoolean(getString(R.string.SETTINGS1, true)){ doSomething(); }

哪个更好??我也不想给应用程序引入太多的开销,所以如果它们都不好,我就不会使用它们。

【问题讨论】:

  • 我不是专家,但在我看来它们并没有太大的不同。也许您应该选择您认为更具可读性的那个?此外,使用 Strings.xml 的一个优点是可以从任何文件中引用该字符串,而不仅仅是您拥有的当前文件。
  • 应用程序的每个类都可以使用类键,这在这里并不重要

标签: java android xml string


【解决方案1】:

第二个选项更好(并且进行这种查找的开销最小)

选项 1 存在缺陷,因为它需要访问外部类中的资源。如果您想从另一个片段或活动中读取该值?

【讨论】:

  • 在这两种情况下,字符串都可以在应用程序范围内访问。我认为第二个更好,因为键类中的字符串是静态的和最终的,它们将像 XML 字符串一样在编译时启动,但不需要调用方法来获取字符串。
  • 是的,但是您需要一个上下文才能从您的代码中查找字符串资源。
  • 是的,在课堂上,为简单起见,这里就不写了。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
相关资源
最近更新 更多