2012-04-12 11 views

Antwort

8

der zweite Ansatz ist eleganter, intern, da tut die TextView (oder was auch immer View -Klasse), um den Job zu bekommen? die Zeichenfolge für Ihre angegebene Ressource

Es wird immer bevorzugt, Komponenten die interne Arbeit zu überlassen. Außerdem ist es kürzer und lesbarer.


über die Interna ich darüber gesprochen: Wenn Sie einen Blick auf Androids Source-Code haben, können Sie sehen, dass die setText(int) -Methode von TextViewis implemented like this:

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

Also, es intern die verwendet Context -klasse, um die Zeichenfolge aus der Ressourcen-ID abzurufen. Nun, wenn Sie die getText() -Methode sehen (die auch von der Context -Klasse kommt), können Sie sehen, dass es is implemented the same way:

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

So für die Leistung oder Zuverlässigkeit Gründen macht es keinen Unterschied. Trotzdem ist es kürzer und lesbarer.

+0

Danke, perfekt! –

+1

@Shamrflow Ich aktualisierte die Antwort mit Code aus der Android-Quelle, um zu zeigen, dass es auf die gleiche Weise implementiert ist. Guck mal. –

+0

Danke Lukas, noch besser. Ich habe festgestellt, dass dies auch für setTitle und setMessage im AlertBuilder und einigen anderen Klassen gilt. Prost! –

1

Nun, da die API eine Methode zur Übergabe von Ressourcen-String-ID bietet, scheint es logisch zu sein, dies zu verwenden. Sie könnten tatsächlich die Funktionsweise von setText (resourceid) überprüfen, um unter der Haube zu sehen, aber setText (R.strings.whatever) wird definitiv empfohlen.

0

Sie können

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

hinzufügen, weil Sie die Ressourcen-Kontext erhalten müssen, nachdem die Zeichenfolge erhalten.