2

辞書、マップ、エクストラ バンドルなどでキーとして使用される文字列をハードコーディングしないことは一般的に良い習慣ですか、それとも問題ですか?

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();
}
4

2 に答える 2

3

適切なプログラミングと MVC モデルでは、キーをハードコーディングしないように指示されます。また、文字列リソースにも入れません。代わりに、定数を使用することを好みます。それらを定義すると、public static他のクラスも同じデータを参照できるようになります。そうすれば、コード内で実際のキーを 1 回入力するだけで済みます。

于 2012-08-08T18:42:49.583 に答える
2

リソース文字列を使用する必要があるのは、それが理にかなっている場合だけです。アプリケーションをスペイン語、フランス語、ロシア語などに翻訳する必要がある場合は、内部の命名を翻訳する必要がありますか? おそらくそうではありません。内部フラグメントの命名には定数 (final) を使用します。私の意見では、それは最も理にかなっています。

フラグメントの目に見える名前については、たとえばタブ付きの表示などです。はい、文字列リソースを使用します。彼らはあなたの友達です。

于 2012-08-08T18:44:52.913 に答える