Variable.Aufruf

  • Antworten:13
Johannes Schaffer
  • Forum-Beiträge: 36

10.06.2018, 14:30:14 via Website

Liebe Community
Meine Frage ist zwar simpel aber ich verstehe es trotzdem nicht.
Bei einer einfachen Textausgabe durch eine TextView. Ich mache das wie folgt

TextView ausgabe;
ausgabe.setText("Hello World")

Müsste dann "ausgabe" nicht ein Objekt sein, damit man davon setText aufrufen kann?

Danke schon mal im Vorraus für eure Hilfe.
LG Johannes

Kommentieren
Johannes Schaffer
  • Forum-Beiträge: 36

10.06.2018, 16:51:15 via Website

Aber ich erstelle mit TextView ausgabe; nur eine Variable vom Typ TextView und kein Objekt.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

10.06.2018, 17:58:10 via Website

Hallo
Nur die eine Variable vom Type TextView reicht nicht.
Richtig du brauchst auch ein Objekt. Instanz auf eine Klasse.
Entweder du sucht die Id die du im XML Layout vergeben hast, oder du musst die View Komplet in Java erstellen.
Das Objekt ist ja schon in XML erstellt worden und auch im Layout geladen wurden. Du musst es nur uber die Id suchen. dazu ist es wichtig in XML der View eine ID zugeben.

Für XML muss das so aussehen.

TextView ausgabe;
ausgabe = ( TextView) findViewById(R.id.textview);
ausgabe.setText("Hello World")

— geändert am 10.06.2018, 21:07:52

Hilfreich?
Ludy
Kommentieren
Tobias E.
  • Forum-Beiträge: 180

10.06.2018, 18:11:04 via Website

Müsste dann "ausgabe" nicht ein Objekt sein, damit man davon setText aufrufen kann?

Aber das ist es doch. Mit der Zeile "TextView ausgabe" erklärst Du, dass Deine Variable "ausgabe" ein Objekt vom Typ "TextView" ist.

Das Objekt erzeugst Du dann mit "ausgabe = TextView(context)". Alternativ weist Du "ausgabe" ein bereits bestehendes Objekt zu. Das Objekt kann beispielsweise über Dein XML Layout erzeugt worden sein. Dann findest Du es über die Methode die Jokel beschrieben hat.

Dann kannst Du auf dem bestehenden Objekt die Methoden wie "setText" aufrufen.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

10.06.2018, 18:23:18 via Website

@Tobias E.
wenn er aber auch die view auf dem Diplay anzeigen will reicht das nicht aus.
Dafür musste auch die LayoutParams setzen , die View zu dem Layout hinzufügen. ...
Einfacher ist das in XML.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

10.06.2018, 18:26:04 via Website

@Tobias E.
wenn er aber auch die view auf dem Diplay anzeigen will reicht das nicht aus.
Dafür musste auch die LayoutParams setzen , die View zu dem Layout hinzufügen. ...
Einfacher ist das in XML.

Was macht das für einen Sinn eine TextView zu haben einen Text zu setzen aber nicht anzuzeigen?

Hilfreich?
Kommentieren
Johannes Schaffer
  • Forum-Beiträge: 36

10.06.2018, 20:38:51 via Website

Ja, vielen Dank erstmal für die ganzen Antworten. Zwei Fragen habe ich jetzt noch. Erstens: Lege ich mit dem xml-Eintrag < Textview> ein Objekt an? Ich dachte das müsste man mit Java machen. Oder wird das automatisch von der IDE gemacht?
Zweite Frage: Lege ich jetzt also mit dem Befehl TextView ausgabe; schon ein Objekt an?

MfG Johannes

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

10.06.2018, 21:00:07 via Website

Zu erstens
ja das Objekt wird beim erstellen des Layout aus dem XML erstellt. Mit dem FindViewByID holst du dir die Instanz und speicherst sie in der Objekt Variablen.

Zweite Frage:
Damit machst du dem Compiler bekannt das es eine Objekt Variable vom Typ TextView gibt.
Die Variable hat noch keinen Inhalt, keine Instanz somit ist es meiner Meinung noch kein Objekt.
Objekte erzeugt man mit new.

http://javatricks.de/tricks/der-unterschied-zwischen-instanziieren-deklarieren-und-initialisieren

Hilfreich?
Kommentieren
Johannes Schaffer
  • Forum-Beiträge: 36

10.06.2018, 21:12:56 via Website

Okay vielen Dank. Das war sehr hilfreich. Mein Fazit ist also, dass Android Studio automatisch ein Objekt anlegt, wenn man es inder xml-Datei anlegt und dass wenn man TextView ausgabe; eingibt, eine Variable entsteht, die zu einem Objekt werden kann, wenn man ihr eines zuweist. Habe ich das so alles richtig verstanden?
PS: Kann man irgendwo den Java-Code sehen, in dem das Objekt von der XML-Datei definiert ist?

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

10.06.2018, 21:14:36 via Website

Hallo
Glaube du vertauschst die Begriffe etwas. In Java ist eigentlich alles ein Objekt.
Was du meinst ist eine Instanz auf eine Klasse. Im Volksmund sagt man auch mal Objekt dazu.

Hilfreich?
Kommentieren
Johannes Schaffer
  • Forum-Beiträge: 36

10.06.2018, 21:20:43 via Website

Okay das meine ich aber. Mir ist nur noch nicht so ganz klar, wie Java ein Objekt von TextView anlegt, wenn wir in die xml-Datei schreiben. XML und Java haben doch erstmal nichts mit einander zu tun.

Hilfreich?
Kommentieren
Jokel
  • Forum-Beiträge: 1.527

10.06.2018, 21:37:32 via Website

Hallo In der onCreate beim Befehl SetContentView wird die XML eingelesen. Aus den in der XML beschriebenen Views wird das Layout und auch die nötigen Instanzen erststellt.
Mit dem findViewById kannst du dir die holen.

— geändert am 10.06.2018, 21:55:31

Hilfreich?
Kommentieren
Johannes Schaffer
  • Forum-Beiträge: 36

10.06.2018, 22:02:59 via Website

Achso vielen Dank für deine ganze Hilfe! Habe es jetzt verstanden;)

Mit freundlichen Grüßen
Johannes

Hilfreich?
Kommentieren