1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. AquaBall, 29.03.2012 #1
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    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.)
     
  2. Sentence, 30.03.2012 #2
    Sentence

    Sentence Erfahrener Benutzer

    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
     
  3. AquaBall, 30.03.2012 #3
    AquaBall

    AquaBall Threadstarter Android-Hilfe.de Mitglied

    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.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Uri oder File path als String speichern zum wiederauslesen Android App Entwicklung 26.01.2017
Du betrachtest das Thema ""@string"-Refactoring" im Forum "Android App Entwicklung",