我应该将我在Android Bundles中用作密钥的字符串存储为资源吗?

时间:2012-08-08 18:38:26

标签: android android-resources

一般来说,不要硬编码在字典,地图和附加组件等中用作键的字符串,或者它是否重要?

extras.putSerializable("myKey", getItem(thisIndex).getSomeObject());

extras.putSerializable(ctx.getString(R.string.my_key), getItem(thisIndex).getSomeObject());

在实例化片段并将页面标题与片段关联以用于页面标题指示符时,我正在执行以下操作

    Bundle pageTitle = new Bundle();
    pageTitle.putSerializable(getString(R.string.page_title_key), getString(R.string.somePageTitle));
    fragments.add(Fragment.instantiate(this, MyPageFragment.class.getName(), pageTitle));

然后在我的FragmentPagerAdapter中:

@Override
public CharSequence getPageTitle(int position) {
    return this.fragments.get(position).getArguments().getSerializable(ctx.getString(R.string.page_title_key)).toString();
}

2 个答案:

答案 0 :(得分:3)

良好的编程和MVC模型会说没有硬编码你的密钥。我也不会把它放在你的字符串资源中。相反,我更喜欢使用常量。如果将它们定义为public static,其他类也可以引用相同的数据。这样,您只需在代码中输入一次实际密钥。

答案 1 :(得分:2)

您应该使用资源字符串的唯一时间是有意义的。如果您需要将您的应用程序翻译成西班牙语,法语,俄语等,您是否需要翻译内部命名?可能不是。我使用常量(final)进行内部片段命名。在我看来,这是最有意义的。

对于片段的可见命名,比如标签显示。是的,使用字符串资源。他们是你的朋友。