2012-08-08 26 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

您應該使用資源字符串的唯一時間是有意義的。如果您需要將您的應用翻譯成西班牙文,法文,俄文等,您是否需要翻譯您的內部命名?可能不會。我使用常量(最終)進行內部片段命名。這在我看來是最有意義的。

對於片段的可見命名,比如標籤式顯示。是的,使用字符串資源。他們是你的朋友。

相關問題