"@string"-Refactoring

A

AquaBall

Fortgeschrittenes Mitglied
2
Ich steh nun vor der Aufgabe, in meine langsam entstandenes Projekt Ordnung zu bringen.

Dazu will ich meine z.B. meine Values neu organisieren.

Definiert in strings.xml
Code:
<string name="eTemp">°C</string>
benützt in layouts:
Code:
android:text="@string/eTemp"
und aufgerufen in div. activities.java:
Code:
 findViewById(R.id.eTemp) oder getString("optTemperatur", "??")
.

Ich finde keine Möglichkeit, das bequem zu korrigieren, wie es bei den meisten Ausdrücken über Refactoring möglich ist.
Gibt es da einen Weg?

(Hardcoded Strings rausschmeißen geht ja auch so einfach, aber dann finde ich nichtmal einen direkten Link wie "Aufrufhierarchie", sondern muss einzeln in meinem res/values-Ordner suchen.)
 
Moin,
in Eclipse gibts einen Refactor für Strings.

Dazu markierst du einfach deinen String, dann oben im Menu auf Refactor -> Android -> Extract Android String.

Dann wird zb aus "Dies ist ein Test" in der strings.xml folgendes erzeugt:
<string name="dies_ist_ein_test">Dies ist ein Test</string>

Im Code setzt Eclipse dann
getString(R.string.dies_ist_ein_test); oder
getContext().getString(R.string.dies_ist_ein_test);
an die Stelle.

War es das, was du suchst?

MfG
 
Danke für die Antwort.

Das was du beschreibst ist genau das Gegenstück. Diese Extraction wird einem ja fast aufgedrängt und ist sinnvoll.

Nun hab ich aber x solche Strings, und möcht deren Namen jetzt vereinheitlichen und organisieren:
Was vor Wochen als "R.string.dies_ist_ein_text" "R.string.dies_ist_ein_anderer_text" und "R.string.sogar_dies_soll_ein_text_sein" definiert wurde, soll nun in "R.string.txtMsgTemperatur", "R.string.txtMsgDruck" und "R.string.txtMsgInhalt" geändert werden. Da dies aber an hundert Stellen passieren soll, muss dazu mühsam jedes .java- und . xml- und .res-File durchsucht werden.

Während nun bei Methoden/Variablen/... 1 Click reicht, um an ALLEN Stellen den Namen gleichzeitig zu "refactorn" (also umzubenennen), verrät er mir bei R.string.XXX nicht mal, in welcher xml das definiert ist.
Ein Refactorversuch (von R.string.XXX auf R.string.YYY) scheitert daran, dass er die 'gen.R.java' ändern will, und die xml-Quelle aber trotzdem unberührt lasst.

Dafür such ich einen sicheren,vollständigen (und bequemen) Weg.
 

Ähnliche Themen

W
Antworten
16
Aufrufe
838
jogimuc
J
kukuk
Antworten
9
Aufrufe
1.172
kukuk
kukuk
benj98
  • benj98
Antworten
4
Aufrufe
1.263
benj98
benj98
Zurück
Oben Unten