在Android中处理软标签

时间:2013-03-05 10:11:41

标签: android android-widget android-resources

我正在构建应用程序并在以下区域使用标签。

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 个答案:

答案 0 :(得分:1)

我会告诉你我通常做的事情:

对于用户将在屏幕上阅读或无论如何从XML布局中引用的所有内容,请使用strings.xml。我估计包括你的1和2.但请记住,对于AlertDialogues,你也可以使用android.R.string.okandroid.R.string.cancel等;因使用而异。

对于项目配置值或API密钥,您可以使用带有字符串,整数等的config.xml。以后可以轻松更改这些值而不会深入到代码中。

对于AsyncTask,它改变了很多工作,但通常是网络,数据库或磁盘操作,我尝试在类本身中包含private static final String URL_PT1 = "http://...";等,因为它们是唯一感兴趣的知道该地址(或DB列,或文件前缀)

对于键名(在Intent和Fragment参数中),我使用private static final String KEY_VALUE = "renjith.Key.MyClassName.VALUE";然后在该类中创建一个public static Bundle getIntentExtras(String value),以便在额外值中正确分配值。那是因为只有那一个类需要知道它的KEY值,没有理由让这些公共可访问,这只会为外部类错误创建错误。

对于Logs(5),在每个类上创建一个private static final String TAG = "Renjith.ThisClassName";(并且对于Fragments使TAG公共在事务中使用)。这样你就可以在LogCat Renjith中创建一个过滤器。*你可以很容易地识别这个日志的来源

修改

对于共享偏好,它取决于:

对于GlobalSharedPreferences我将使用静态set / get方法创建一个类来处理它们,这些方法必须接收Context和该类中的所有键private static

对于本地共享首选项(只有一个类对保存/检索感兴趣),我将处理一个与该类同名的SharedPreferences文件,并在该一个类中处理所有键private static

同样,同样的哲学,只有真正需要了解这些细节的类才能了解它们,并使用直接方法调用抽象到其余的类。