2012-04-12 18 views
6

どちらの仕事、あなたはint型を表示しないようにするために、文字列を取得必要があります連結開始、明らかならば。のsetText(のgetString(R.strings.whatever)またはのsetText(R.strings.whatever)?

質問:これは、最も「エレガント」または使用することを「推奨」です

が内部で、TextView(または任意View級)を得るための仕事をするので、第二のアプローチは、よりエレガントであるあなたに

答えて

8

ありがとうございました!あなたの指定されたリソースの文字列。

コンポーネントを内部作業にすることは、常に優先されます。また、より短くて読みやすい。

public final void setText(int resid) { 
    setText(getContext().getResources().getText(resid)); 
} 

だから、それは内部的に使用しています:あなたはアンドロイドのソースコードを見てみると、あなたはsetText(int) -method is implemented like thisTextViewのがいることを見ることができます:私はについて話した内部について


Context -classは、resource-idから文字列を取得します。

public final String getString(int resId) { 
    return getResources().getString(resId); 
} 

ので、性能や信頼性の理由から、それは違いはありません:あなたは(もContext級から来ている)getText() -methodを見れば今、あなたはそれis implemented the same wayがあることがわかります。それでも、それはより短くて読みやすい。 APIは、リソース文字列IDを渡す方法を提供するので

+0

完璧な、ありがとう!私はそれが同じように実装されていることを、示すためにAndroidのソースからいくつかのコードで答えを更新@Shamrflow –

+1

。見てみましょう。 –

+0

Lukasさん、ありがとうございました。私は、AlertBuilderのsetTitleとsetMessage、および他のいくつかのクラスにも当てはまります。乾杯! –

1

まあ、これを使用して好むように論理的であるように思われます。実際には、setText(resourceid)の作業を確認して、そのフードの下を見ることができますが、setText(R.strings.whatever)を必ずお勧めします。

0

あなたは文字列を取得した後、リソースコンテキストを取得する必要があるので、あなたは

yourEditText.setText(getResources().getString(R.string.mytext)); 

を追加することができます。