1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Textfeld auslesen, Text einlesen und wieder ausgeben

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Murbertus, 24.11.2011.

  1. Murbertus, 24.11.2011 #1
    Murbertus

    Murbertus Threadstarter Junior Mitglied

    Beiträge:
    36
    Erhaltene Danke:
    0
    Registriert seit:
    24.11.2011
    Hallo!

    Ich programmiere seit einem knappen Jahr Java und habe mich letzte Woche an Android herangewagt. Nun schreibe ich an einer App, wo man in das erste Textfeld Text eingibt, dann auf einen Button klickt und dieser Text codiert im zweiten Textfeld ausgegeben wird; als Codierung verwende ich den Cäsarcode: Caesar-Verschlüsselung

    Das Layout steht soweit (2 Multiline-Textfelder sowie der Button, noch nichts aufregendes also), die Nullabfrage funktioniert ebenfalls schon (wenn der Benutzer ins erste Feld nichts eingibt, erscheint eine Fehlermeldung).

    Wie mache ich aber nun weiter? Ich möchte keinen Code, den ich nur noch mit Copy&Paste in meine Activity eintragen muss, ich möchte nur einen groben Lösungsweg. ;)

    Verschiebung: der Benutzer soll in ein weiteres Textfeld eingeben können, wie groß die Verschiebung sein soll. Wie lese ich generell Werte aus Textboxen aus?

    Wie lese ich außerdem den String (=eingegebener text des Users) aus dem ersten Texfeld aus, um ihn zu codieren und wie befülle ich dann das zweite Tetfeld?

    Über Hilfe würde ich mich sehr freuen! :)
     
  2. kleinerkathe, 24.11.2011 #2
    kleinerkathe

    kleinerkathe Android-Lexikon

    Beiträge:
    1,365
    Erhaltene Danke:
    219
    Registriert seit:
    23.01.2010
    Auslesen:
    private EditText mText
    mText = (EditText) findViewById(R.id.id_vom_textfeld);
    String text = mText.getText().toString();

    Setzen:
    mText.setText("String")

    Kurz mal die paar Brocken hingeworfen ;)
    Habs nur mal schnell ausm Projekt rauskopiert ;) Aber die Stichwörter sollten dir helfen das passende zu finden ;)


    //EDIT: Upps, das ist zwar "CopyPaste"-ready ... aber such einfach nach EditText bei android.com
    http://developer.android.com/reference/android/widget/EditText.html
     
    Zuletzt bearbeitet: 24.11.2011
    Murbertus bedankt sich.
  3. swordi, 24.11.2011 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich denke dazu findet man nach 3 jahren android echt schon 1000 seiten.

    d.android.com da findest, vor allem zu solchen anfänger fragen, genug
     
  4. Murbertus, 24.11.2011 #4
    Murbertus

    Murbertus Threadstarter Junior Mitglied

    Beiträge:
    36
    Erhaltene Danke:
    0
    Registriert seit:
    24.11.2011
    @kleinerkathe: Erstmal danke für die schnelle Antwort! :)

    Das hilft mir schon ein wenig weiter! Komme ich da komplett ohne BufferedReader aus?

    Meine weitere Vorgehensweise:
    Nach dem Auslesen 'stopfe' ich das Ganze in ein Array. Jedes (alphanummerische) Zeichen soll einen Platz im Array finden.
    Beispiel: ich gebe in das erste Textfeld "Hallo Android!" ein. Das Array nenne ich textmemory. Dann soll es so gefüllt werden (mittels einer Schleife): H ist an der nullten Stelle, a an der ersten, l an der zweiten,... Das Befüllen an sich ist kein Problem, nur das Splitten. Von Java kenne ich den .split-Befehl, aber nach welchem Zeichen wird gesplittet? Normalerweise definiere ich da einen . oder ein Leerzeichen als 'Auslöser' fürs Splitten.

    Außerdem bräuchte ich ja ein Array, welches das Alphabet beinhaltet, also:

    a = [0]
    b = [1]
    c = [2]
    ...

    Die eingelesenen Werte würde ich mit denen aus dem Alphabetsarray vergleichen, die Verschiebung dazu addieren, in einen weiteren String schreiben und dann schließlich den zweiten String im zweiten Textfeld ausgeben.

    Ist diese Vorgehensweise richtig oder habe ich da einen groben Denkfehler drin?
     
    Zuletzt bearbeitet: 24.11.2011
  5. Tom299, 25.11.2011 #5
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Hmm, also wenn du schon 1 Jahr Java programmierst, mußt du doch schon mit der String-Klasse gearbeitet haben, oder???

    Dann weißt du ja sicher auch, daß man über den String iterieren kann (z.B. myString.charAt(i)). Wenn du ein Char-Array brauchst, gehts noch einfacher -> myString.toCharArray().

    Unterscheidest du zwischen Groß- und Kleinschreibung? Dann wird das mit den 26 Buchstaben im Array nicht so einfach hinhauen zum Vergleichen ;-)

    Und was ist mit den Sonderzeichen, werden die rausgefiltert? In deinem Beispiel "Hallo Android!" hast du ja gleich 2 drin, Leerzeichen und Ausrufezeichen, alphanumerisch sind aber nur Buchstaben und Zahlen.

    Wenn du nur z.B. die kleinen Buchstaben von a - z in einem Array haben willst,
    kannst du das so machen:
    Code:
    		char myChar = 'a';
    		for (int i=0;i<26;i++) {
    			System.out.println(myChar);
    			myChar++;
    		}
    
    ich hoffe, das bringt dich weiter ;-)
     
    Murbertus bedankt sich.
  6. Murbertus, 25.11.2011 #6
    Murbertus

    Murbertus Threadstarter Junior Mitglied

    Beiträge:
    36
    Erhaltene Danke:
    0
    Registriert seit:
    24.11.2011
    Mit Strings habe ich schon öfters gearbeitet, ja. :)

    Zuerst wollte ich zwischen Groß- und Kleinschreibung unterscheiden. Es wird aber einfacher sein, wenn ich das doch nicht mache. In die Verwendung von Char-Arrays muss ich mich noch einlesen, die habe ich bis jetzt noch nie benützt.

    Die Sonderzeichen gebe ich dann 1:1 wieder, da wird also nichts verändert. :)

    EDIT: ich werde es mit den Ascii-Werten probieren, das sollte doch funktionieren, oder? http://www.asciitable.com/
    A würde dann ja zum Beispiel 65 entsprechen und die Sonderzeichen wären auch integriert, ich könnte dann also doch alle Zeichen codieren.
    Nur das Einlesen bereitet mir noch Probleme...

    EDIT²: Das Einlesen funktioniert wunderbar, nur einen FC muss ich noch beseitigen, das schaffe ich auch noch. Vielen Dank an euch! :)
     
    Zuletzt bearbeitet: 25.11.2011

Diese Seite empfehlen