Frage zur Sichtbarkeit der Eigenschaften

F

FoxMan60

Neues Mitglied
0
Ich glaube, ich brauche eine geistige Anleihe. Bin eigentlich immer noch Java Beginner

public class AAA Activity
{
public Textview txtDatum;

...
TextView txtDatum = (TextView) findViewById(R.id.txtDatum);
}

public class BBB Activity
{
AAA myaaa = new AAA ();
TextView test = myaaa.txtDatum;
}

"test" erhält "myaaa.txtDatum" ohne Probleme. Nur warum ist "myaaa.txtDatum = null" ???
Mit normalen Datentypen wie String, Integer funktioniert die Übergabe des Wertes ohne Problem.
Kann man in Java soetwas generell nicht machen? Gibt es einen anderen Weg?

Danke
 
Hey ho,

Ich glaube nicht das man Activitys in android schachteln kann.
Dafür gibt es Fragmente.

lg. Dagobert
 
Ist doch gar nicht geschachtelt. Sollte an sich passen. Denke eher, dass das findViewById in onCreate steht. Das wird aber glaube ich nur aufgerufen, wenn die Activity startet und nicht schon, wenn eine Instanz davon erzeugt wird.

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
DagobertDokate schrieb:
Hey ho,

Ich glaube nicht das man Activitys in android schachteln kann.
Dafür gibt es Fragmente.

lg. Dagobert


Die Anweisung "TextView txtDatum = (TextView) findViewById(R.id.txtDatum);" steht "irgendwo" später im Programm. Ist also schon mit dem graphischen Element verbunden und hat auch schon einen Wert.

Wenn das grundsätzlich nicht geht, wozu denn dann die ganze Vererberei?
Ich habe auch Folgendes versucht:

public class BBB extends AAA

Dann sehe iche die Objekte ebenfalls, jedoch sind wieder alle null.:scared:
 
Vererbung ist etwas ganz anderes als das was du da treibst ;)

vllt solltest du mal ein bisschen mehr Code zeigen :D


lg. Dagobert
 
Zuletzt bearbeitet:
Sorry, aber wenn das

public class BBB extends AAA

nichts mit vererben zu tun hat, was ist das sonst. Ich sehe die Dinge, die in AAA zur verfügung gestellt werden, kann sie aber nicht "richtig" nutzen.
 
Ich beziehe mich immer noch oben auf dein Beispiel... das extends iwas mit vererbung zu tun hat ist klar^^

Aber ich weis immer noch nicht wie B einen Wert haben soll, entwerder ist die Activity B aktiv oder A... aber niemals beide zusammen oO

lg. Dagobert
 
txtDatum bekommt im Laufe der Activity einen Wert zugewiesen. Das ist dort nicht aufgeführt.

Somit würde ich annehmen, daß BBB dieses Wert auf hält. Ist ja im Grunde auch so, denn auf txtDatum kann ich zugreifen. Nur ist der Wert verschwunden.

Der ursprüngliche Beitrag von 17:41 Uhr wurde um 17:54 Uhr ergänzt:

"entwerder ist die Activity B aktiv oder A... aber niemals beide zusammen"

Wie soll ich denn das verstehen? Ich habe eine Aktivity und öffne aus dieser Activity die zweite? Damit existiert die erste doch noch, oder nicht ?
Wenn nicht, wundere ich mich, daß ich nach dem Schließen der zweiten die erste Activity wieder sehe.
 
reneph schrieb:
Um Daten von einer zur anderen Activity zu übertragen geht man anders vor.

Daten an eine Activity weitergeben: bspw. per putExtra beim erstellen des Intents für die neue Activity.

Daten von einer Activity wieder bekommen: bspw. per startActivityForResult.

NUr mal so als Stichworte. Auf die Schnelle hab ich bspw. das gefunden, wo beides angerissen wird: Android App Development: Using intents to pass data and return results between activities | Mobile Orchard


Dass es andere Wege gibt, ist mir klar. Ich kann es ja auch mit einem Konstruktor übergeben.
Es hat sich mir nur die Frage gestellt, ob es nicht Möglichkeiten gibt, die Sache einfach mit weniger Code umzusetzen.

Wenn es nicht geht, dann ist das eben so.
Den andere Weg werde ich mit ersteinmal ansehen. Den kenne ich nicht.

Danke
 
Auf deine Art und Weise solltest du das lösen können, indem du deine Views als static deklarierst. Aber ob das sinnvoll ist oder nicht, das steht auf einem anderen Blatt.
 
Also ein wenig Grundlagen.

Du hast die Klasse Activity AAA, von der baust du ein Objekt bzw Android macht das automatisch wenn du die Acitivity aufrufst, in diesem Objekt ist auch der Wert gefüllt.
Jetzt gehts du aber hin und baust mit:
AAA myaaa = new AAA ();

ein ganz neues Objekt, dieses Objekt ist aber leer hat also keinerlei gesetzte Variablen.

Das ist ein wichtiger Unterschied.
Wenn du auf die Felder eines vorhandenen Objekts zugreifen willst musst du genau dieses Objekt übergeben.

Beim erben ist das auch nicht viel anders.
Wenn du BBB von AAA erben lässt hast du erst mal eine neue Klasse BBB erschaffen.
Wenn du jetzt BBB startest dann ist dort auch erst mal alles leer.

Du musst dir den Unterschied klarmachen.
Der wird klarer wenn du dir überlegst, dass AAA und BBB ja jeweils schon Activities sind.
Wenn alle Activities im System die gleichen Werte hätten könntest du ja gar nicht 2 davon gleichzeitig aufrufen, da du ja dann die Werte der anderen immer überschrieben würdest.

Nochmal ein Beispiel:
AAA objekt1 = new AAA()
AAA objekt2 = new AAA()

beide erst mal leer.

objekt1.txtDatum = <irgendeineView>

objekt2.txtDatum ist dann immer noch null, da beide Objekte voneinander unabhängig sind.

Klassen sind nur die Baupläne, mit denen du beliebig viele unabhänige Objekte bauen kannst, die nicht den Status der anderen kennen.


EDIT:
@reneph
Das mit static wird nicht funtkionieren, da im static Teil einer Klasse die Views gar nicht bekannt sind.
 
  • Danke
Reaktionen: FoxMan60

Ähnliche Themen

M
Antworten
2
Aufrufe
631
Mozart40
M
M
Antworten
3
Aufrufe
174
moin
M
A
Antworten
1
Aufrufe
585
swa00
swa00
Zurück
Oben Unten