我正在构建一个应用程序并在以下领域使用标签。
1. Component Names (TextView, Buttons etc)
2. Buttons in alert boxes
3. Parameters to AsyncTask
4. Key names in Intent extras
5. Log tags
我有 strings.xml 文件来存储和使用标签。我将它用于第 1 类。您认为对其他人来说最好的选择是什么?
res/strings.xml 或常量类?
我正在构建一个应用程序并在以下领域使用标签。
1. Component Names (TextView, Buttons etc)
2. Buttons in alert boxes
3. Parameters to AsyncTask
4. Key names in Intent extras
5. Log tags
我有 strings.xml 文件来存储和使用标签。我将它用于第 1 类。您认为对其他人来说最好的选择是什么?
res/strings.xml 或常量类?
我会向你建议我通常会做的事情:
对于用户将在屏幕上阅读或以任何方式从 XML 布局中引用的所有内容,请使用 strings.xml。我认为这包括您的 1 和 2。但请记住,对于 AlertDialogues,您也可以使用android.R.string.ok
orandroid.R.string.cancel
等;这将因用途而异。
同样对于项目配置值或 API 密钥,您可以拥有一个带有字符串、整数等的 config.xml。这样可以在以后轻松更改这些值,而无需深入研究代码。
对于 AsyncTask,它所做的工作有很多不同,但通常是网络、数据库或磁盘操作,我尝试private static final String URL_PT1 = "http://...";
在类本身中包含等,因为它们只对知道该地址(或数据库列)感兴趣, 或文件前缀)
对于键名(在 Intent 和 Fragment 参数中),我使用private static final String KEY_VALUE = "renjith.Key.MyClassName.VALUE";
然后public static Bundle getIntentExtras(String value)
在该类中创建一个将正确分配额外值的类。那是因为只有一个类需要知道它的 KEY 值,没有理由让这些公共可访问,这只会为外部类做错了错误。
对于 Logs (5),在每个类上创建 a private static final String TAG = "Renjith.ThisClassName";
(对于 Fragments,将 TAG 公开以用于事务)。这样您就可以在 LogCat Renjith.* 中创建一个过滤器,并且您可以轻松识别此日志的来源
编辑:
对于共享首选项,它取决于:
对于 GlobalSharedPreferences,我将创建一个类来使用静态 set/get 方法来处理它们,这些方法必须接收 Context 和private static
该类中的所有键。
对于本地共享首选项(只有一个类对保存/检索感兴趣),我将在一个 SharedPreferences 文件中处理,该文件与该类具有相同的名称,并且所有键都在private static
该类中。
同样,同样的哲学,只有真正需要了解这些细节的类才会知道它们,并通过直接方法调用抽象到其余的类。