どちらの仕事、あなたはint型を表示しないようにするために、文字列を取得必要があります連結開始、明らかならば。のsetText(のgetString(R.strings.whatever)またはのsetText(R.strings.whatever)?
質問:これは、最も「エレガント」または使用することを「推奨」です
が内部で、TextView
(または任意View
級)を得るための仕事をするので、第二のアプローチは、よりエレガントであるあなたに
どちらの仕事、あなたはint型を表示しないようにするために、文字列を取得必要があります連結開始、明らかならば。のsetText(のgetString(R.strings.whatever)またはのsetText(R.strings.whatever)?
質問:これは、最も「エレガント」または使用することを「推奨」です
が内部で、TextView
(または任意View
級)を得るための仕事をするので、第二のアプローチは、よりエレガントであるあなたに
ありがとうございました!あなたの指定されたリソースの文字列。
コンポーネントを内部作業にすることは、常に優先されます。また、より短くて読みやすい。
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を渡す方法を提供するので
まあ、これを使用して好むように論理的であるように思われます。実際には、setText(resourceid)の作業を確認して、そのフードの下を見ることができますが、setText(R.strings.whatever)を必ずお勧めします。
あなたは文字列を取得した後、リソースコンテキストを取得する必要があるので、あなたは
yourEditText.setText(getResources().getString(R.string.mytext));
を追加することができます。
完璧な、ありがとう!私はそれが同じように実装されていることを、示すためにAndroidのソースからいくつかのコードで答えを更新@Shamrflow –
。見てみましょう。 –
Lukasさん、ありがとうございました。私は、AlertBuilderのsetTitleとsetMessage、および他のいくつかのクラスにも当てはまります。乾杯! –