2012-08-08 25 views
2

是不是硬编码在字典,地图和演员包等中用作键的字符串是好的做法,还是这很重要?我应该将存储在Android Bundles中的字符串用作资源吗?

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

经文

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

我做实例片段,并在我的FragmentPagerAdapter用于与网页标题指标使用

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)); 

然后与相关联的片段的页面标题时,以下:

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

我相信你应该进入资源的唯一字符串是那些可能会改变的字符串,例如,用户界面中可能需要本地化的文本。恕我直言,密钥的名称永远不会出现在代码之外,所以除了关于可维护性的一点(小小的扩展)之外,我会硬编码字符串并避免getString调用的开销。一个小的增强可能是使用一个静态的最终字符串来保存该值作为你的类的一个字段,这有助于解决维护问题。无论如何,编译器都会内联它。 – Simon 2012-08-08 18:41:06

回答

3

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

+0

对,但有时候,就像我的例子,我需要在不同的类中使用一个键。一个活动放一个,其他一些类需要访问它。 – topwik 2012-08-08 18:44:57

+0

你的片段应该由一个主要活动驱动,因此公共静态最终String SOME_KEY =“somekey”;应该就够了。 – 2012-08-08 18:46:44

+1

正如tencent暗示的那样,您可以定义公共静态变量并从您的所有类访问它们。然后,你可以感觉自己是一个超级英雄程序员。 – 2012-08-08 18:50:04

2

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

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

相关问题