EditText mit getText aus- und mit setText auf TextView wieder einlesen

  • 10 Antworten
  • Letztes Antwortdatum
K

Klausinator

Neues Mitglied
2
Guten Abend allerseits!
Ich habe in Android Studio Versuche gestartet, um mich mit dem Widget EditText etwas vertraut zu machen. In meinem kleinen Übungsprogramm soll es einen EditText, einen Butten und eine TextView geben. Wenn der Button gedrückt wird, soll das Eingegebene auf der Textview sichtbar werden.

Java:
package hsa.de.edittextbung;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText e = (EditText)findViewById(R.id.edit);
        Button b = (Button)findViewById(R.id.button);
        final TextView t = (TextView)findViewById(R.id.text);

        b.setOnClickListener(new View.OnClickListener(){
           public void onClick(View v){
               t.setText(e.getText().toString());
           }
        });
    }
}

Mein Emulator bringt diesen Code leider nicht zum Laufen. Es gibt keine Fehlermeldung, aber ich warte vergebens, dass das Programm im Emulator startet. Ich habe auch schon Varianten mit lokaler String Variable probiert, die eigentlich das selbe in grün(also mit Zwischenschritt) sind. Das Casting bei findViewById ist auch nur dort um ganz sicher zu gehen.
Denke ich zu simpel oder ist mir ein Fehler unterlaufen? Ich habe bei meiner Suche nur Dinge gefunden, die meinen obrigen Code bestätigen. Ich arbeite mit dem Skript meines Professors und beherrsche die Java-Grundlagen

Vielen Dank für jede Hilfe!
 
Zuletzt bearbeitet:
Hallo @Klausinator,

und herzlichst willkommen im Forum.

Im Überblick scheint erst mal nichts falsch zu sein.

Mein Emulator bringt diesen Code leider nicht zum Laufen. Es gibt keine Fehlermeldung, aber ich warte vergebens, dass das Programm im Emulator startet.

a) Klammere mal deine Mimik ab "final EditText" aus und starte das Program neu.
Dann gibt es erst mal nur den Basis-Rumpf und das Program müsste auf dem Emulator laufen.
P.S. "final" sollte man nach Möglichkeit vermeiden , kannst du auch weg lassen.

b) Wenn nicht , schau doch mal im ErrorLog , was AS denn dir dort schreibt.
c) Als Alternative solltest du einmal ein Device nehmen und es über USB anschliessen und ohne Emulator
probieren. (ADB)

Der Emulator ist nur ein Hilfsmittel und nicht wirklich zum guten Programmieren gedacht.


Anmerkung : Aus dem Bauch heraus vermute ich den Fehler entweder in deiner Installation,
oder ggf. ein Layout XML Fehler. (Dann müsste allerdings ein Log vorliegen)
 
Zuletzt bearbeitet:
Hallo also in deinen Code kann ich keinen Fehler erkennen.

Startet denn überhaut der Emulator richtig?
Hast du mal versucht ein neues Projekt so wie es vom Studio erstellt wird zu starten.

Wenn das alle geht würde ich erstens auf einen Fehler im Layout XML vermuten.
Oder in deinen Projekt ist etwas schief.
Da würde ich nochmal von vorne anfangen mit einem neuen Projekt. Auch einer neuen Layout Datei
 
  • Danke
Reaktionen: swa00
Danke für die Antwort :)
@swa00 , wenn ich die Initialisierung nicht final mache, bekomme ich "error: local variable e is accessed from within inner class; needs to be declared final"
Die Layout File sind nur 3 Elemente, welche nur aus id und layout-Werten bestehen.. Das müsste eigentlich keine Probleme machen
Mir reicht vorerst mal, dass der Code prinzipiell funktionieren müsste. Ich habe so meine Probleme mit den Emulatoren. Ich werde später ein neues Projekt starten und das gleiche noch mal probieren.
EDIT: Scheinbar geht KEINES meiner Programme mehr auf dem Emulator. "Waiting for target Device to come online." steht dort. Für Immer.
EDIT2: Wenn ich im AVD-Manager Rechtsklick>Wipe Data drücke, gehen die ANDEREN Programme wieder.

Gruß, Klausi
 
Zuletzt bearbeitet:
Ja das final muss sein weil du in einer callback Methode die variable benutzen willst.

Layout nur drei Elemente hatte ich auch schon und ging nicht erstelle mal eine neue datei echt neu nicht den xml Code kopieren
Beiträge automatisch zusammengeführt:

Starte mal den Rechner und somit auch daß studio neu
 
Zuletzt bearbeitet:
enn ich die Initialisierung nicht final mache, bekomme ich "error: local variable e is accessed from within inner class; needs to be declared final"

Dafür solltest du natürlich die Variablen im Hauptrumpf deklarieren und die Zuweisung der Instanz im OnCreate.

Code:
public class MainActivity extends AppCompatActivity
{
public EditText e;
public TextView t;
public Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        e = (EditText)findViewById(R.id.edit);
        b = (Button)findViewById(R.id.button);
        t = (TextView)findViewById(R.id.text);

        b.setOnClickListener(new View.OnClickListener(){
           public void onClick(View v){
               t.setText(e.getText().toString());
           }
        });
    }
}

EDIT: Scheinbar geht KEINES meiner Programme mehr auf dem Emulator. "Waiting for target Device to come online." steht dort. Für Immer.

Hast du die Ports zu ? e.g. 5554


Was passiert , wenn du eine physisches Device nimmst ?
 
Zuletzt bearbeitet:
@swa00 an dem final wird es nicht ligen.
Ist vielecht nicht der beste Programmierer Stiel geht aber
 
  • Danke
Reaktionen: swa00
Schon klar Jörg, ich gehe davon aus , dass es gar nicht am Code liegt , wir beide finden ja keinen Fehler.
Wollte ihn nur darauf "schubsen" deshalb oben mein "P.S." = Randbemerkung dazu :)

Ich vermute die Installation resp. Ports , weil sein Emulator ja hochkommt, aber ADB nicht verbinden kann.
 
Zuletzt bearbeitet:
Tehma Emulator startet der den kommplet. Ist er überhaupt schon mal komplett gestartet?

Was für eine CPU hast du eigentlich Intel oder AMD?
Beiträge automatisch zusammengeführt:

Wie startest du den emulator?
Benutze oben den grünen Pfeil. Starte ihn micht über den avd Manager.
 
Zuletzt bearbeitet:
swa00 schrieb:
Hast du die Ports zu ? e.g. 5554
Ich weißt leider nicht was das bedeutet :D
ich habe jetzt mein Handy als Device genommen, wäre sonst gar nicht drauf gekommen. am Handy läufts. Ich hab einen AMD Prozessor verbaut, denke es wird daran liegen.
Danke für eure Hilfe! Ich nehm in Zukunft einfach mein Handy zum testen
 
  • Danke
Reaktionen: jogimuc und swa00
Ich weißt leider nicht was das bedeutet

Der Emulator kommuniziert mit dem AndroidStudio über Ports (TCP)
Hast du eine Firewall an, so blockierst du damit die Verbindung zum Emulator
 
Zuletzt bearbeitet:

Ähnliche Themen

A
Antworten
11
Aufrufe
389
swa00
swa00
B
Antworten
4
Aufrufe
861
bb321
B
M
  • MikelKatzengreis
Antworten
5
Aufrufe
516
swa00
swa00
Zurück
Oben Unten