【发布时间】:2011-05-24 22:38:57
【问题描述】:
在传递 Intent.putExtra("myName", myName) 等 extras 时,extra 名称的约定是什么?
ie:如果在两个活动之间传递数据,两者都会在 id“myName”下放置/提取数据,但我应该在任何地方硬编码“myName”,还是将值保留在 R.values.string 中?
【问题讨论】:
在传递 Intent.putExtra("myName", myName) 等 extras 时,extra 名称的约定是什么?
ie:如果在两个活动之间传递数据,两者都会在 id“myName”下放置/提取数据,但我应该在任何地方硬编码“myName”,还是将值保留在 R.values.string 中?
【问题讨论】:
硬编码绝对不是一个理想的解决方案。
Android 框架中使用的约定是创建名为 EXTRA_FOO(其中 FOO 是您的密钥名称)的 public static final 常量,例如 Intent.EXTRA_ALARM_COUNT
常量的实际值是一个名称间隔的字符串以避免冲突:"android.intent.extra.ALARM_COUNT"
如果您不想使用常量在您的活动之间创建依赖关系,那么您应该考虑将这些键放入您的 strings.xml 文件中的字符串值中。在 xml 中定义键时,我倾向于遵循相同的命名约定:
<string name="EXTRA_MY_NAME">com.me.extra.MY_NAME</string>
从 Java 端看,它仍然像一个静态常量:
getString(R.string.EXTRA_MY_NAME);
【讨论】:
我在文档中看到的唯一内容是额外的键应该从包名开始。但是我并没有完全遵循这一点,到目前为止,该应用程序运行良好。
我宁愿在代码中使用 R.string.some_key 只是为了让它干净干燥。
【讨论】: