2012-11-24 9 views
21

私はちょうどメリット/オーバーヘッドは、例えば...ではなく、実際のJavaコード内にハードコーディング文字列よりも@stringを使用するためのもので何を思ったんだけど:打ち文字列 - アンドロイド

// To get the string resource: 
getActivity.setTitle(getString(R.string.my_string)); 

これは、アクションバーのタイトルのようなもののためのベストプラクティスである、動的に作成されたボタンのテキスト、電気ショック療法...または私はちょうどこれを行う必要があります:私はそれを最初の方法をやって、もう少しのオーバーヘッドがあるだろう知っている

// Hardcoded string 
getActivity.setTitle("My String"); 

を..ベストプラクティスが何であるか分かりません。

答えて

28

実際に@stringシステムを使用していることに気付いていない場合は、localizationのドキュメントをお読みください。それはあなたのアプリで簡単にテキストを見つけて後で翻訳することができます。

これをクリアしてくれたHippに感謝します。

同じ値の複数の文字列を使用しても、メソッド(Strings.xmlとプログラムによって)は関連するオーバーヘッドを持たないようです。 Oracleによれば、「すべてのリテラル文字列と文字列定数定数式は中止されています」ということは、オブジェクトを再度使用すると再作成されるのではなく、再使用されることを意味します。

+8

+1を@Stringのために行くお勧めするのに十分だと思いロケール固有 リソースディレクトリに保存されていますローカリゼーション。 – PravinCG

+9

文字列はインターンされているので、私はあなたの2番目のコメントが当てはまるとは思わない。 – AbdullahC

+1

@Hippoそれは私がそこにしようとしていたポイントです。 String "Title"が1つのクラスと他の5つのクラスで作成された場合Strings.xmlを使用すると、1つのインスタンスが参照されます。これらの5つのクラスではなく、新しいStringオブジェクトをインスタンス化します。それは正確に聞こえるか? – KDEx

3

こうすることで、プロジェクト内のすべての文字列を変更することができます。コード内の10の異なる場所で同じ文字列を使用したとします。それを変更するとどうなりますか?プロジェクトで使用されているすべての場所を検索するのではなく、一度変更するだけで、変更はプロジェクトのどこにでも反映されます。

1

よくstrings.xmlを解析する必要がありますか?それでは、実行時に気づかないかもしれないが、コード化されたコードをパフォーマンスに最適にすると思います。アプリを翻訳する予定がある場合に備え、すべての文字列を1つの場所に入れるために、ユーザーはそれを使用することを選択します。

0

strings.xmlファイルに文字列を設定することには多くの利点があります。一言で言えば、複数の場所で同じ文字列を使用することができます。後で文字列を変更する必要がある場合には便利です。また、同じテキストを異なる言語で表示することもできます。文字列をハードコーディングしても、それらすべてのオプションは得られません。
ところで、すべてのテキストをstrings.XMLファイルに入れる必要はありません。アプリケーション内の複数の場所で使用される可能性のあるものだけです。
のstrings.xmlファイル内の文字列を配置するための一般的なルールは、これらは以下のとおりです。

  • それが複数の場所で使用されますか?
  • 複数の言語で使用されますか?
  • 動的か静的か

私は確かに他の理由がありますが、これは私が知っているものです。

うまくいけば、これが役に立ちます。

9

文字列をレイアウトファイル/コードにハードコードするのは良い方法ではありません。それらを文字列リソースファイルに追加してレイアウトから参照する必要があります。

理由:

  • これは、あなたがちょうどあなたのstrings.xmlファイルを編集して、同時にすべてのレイアウトで同じ単語のすべての発生を更新することができます。
  • 複数の言語をサポートするためにも非常に便利です。それぞれのサポートされている言語で別々のstrings.xmlファイルを使用できます。 documentationとして

言う:

は、アプリケーションのデフォルトの言語が英語であると仮定します。 あなたのアプリケーション内のすべてのテキストをフランス語 フランス語にローカライズし、アプリケーションのテキストの大半(アプリケーションのタイトルを 以外)を日本語に変換するとします。この場合は、あなたが 3つの代替のstrings.xmlファイルを作成することができ、それぞれが

が、私はこれらの理由がため

関連する問題