Schließen eines Views aus einer fremden Class

T

Tai

Neues Mitglied
0
Hi,

ich habe versucht eine View zu schließen von einer anderen Class wie folgt:
Code:
public static void EndMethod(){
 finish();
}

leider ist finisch eine non-static Methode sodass es nicht geht!
Hat jemand eine Lösung?
 
Tai schrieb:
Hi,
leider ist finisch eine non-static Methode sodass es nicht geht!

Klar geht das nicht, denn finish() benötigt eine Instanz - nämlich die, die geschlossen werden soll. Statische Methoden sind aber instanzlos. Wie willst du mit einer intanzlosen Funktion eine bestimmte Instanz schliessen? Woher sollte die Funktion denn wissen, welches View geschlossen werden soll?

Du könntest natürlich die Instanz als Parameter übergeben, aber ich denke mal das hilft dir nicht weiter. Wenn du die Instanz hättest, könntest du ja auch direkt finish() aufrufen.


Hat jemand eine Lösung?

Beschreib doch mal genauer was du da eigentlich machen willst.
 
Also ich habe zwei Classen jede Classe hat eine eigenen View. Meine Classe1 startet die Classe2! Jetzt will ich aber die Classe1 schließen von der Classe2 aus.

Das ist jetzt nur ein vereinachtes Modell! Es bring mir nichts, wenn du sagt ja denn schließt doch die Classe wenn du die Classe2 startest!

LG
 
Tai schrieb:
Also ich habe zwei Classen jede Classe hat eine eigenen View. Meine Classe1 startet die Classe2! Jetzt will ich aber die Classe1 schließen von der Classe2 aus.

Das ist jetzt nur ein vereinachtes Modell!

Extrem vereinfacht :) Eigentlich meinte ich, dass du mal ein bisschen deine Architektur beschreibst - im speziellen, wie du denn die Klasse2 startest. Warum übergibst du nicht einfach eine Referenz auf Klasse 1, wenn du Klasse 2 von Klasse 1 aus startest:

Code:
public class Class1 {
    public void someFunction () {
        new Class2().start(this);
    }
}

public class Class2 {
    public void start (Class1 handle) {
        handle.finish();
        // alles was Class2 sonst noch macht
    }
}
 
Ne ich starte das ganz über einen Intent
Code:
Intent ky = new Intent(DetailView.this, PayView.class);
startActivity(ky);

Also für meine Beispiel Classe1 DetailView und Classe2 PayView
 
Tai schrieb:
Ne ich starte das ganz über einen Intent
Code:
Intent ky = new Intent(DetailView.this, PayView.class);
startActivity(ky);

Also für meine Beispiel Classe1 DetailView und Classe2 PayView

Also mir ist jetzt nichts bekannt, wie du rein über ein Intent eine Referenz übergeben kannst. Es gibt das Parcelable Interface mit dem du komplexere Datentypen übergeben kannst aber das ist dann keine richtige Referenz.

Wenn du aber nur zwischen 2 Views hin- und herschalten willst, dann tuts vielleicht auch der ViewFlipper: ViewFlipper | Android Developers
 
finishActivity() mit explizitem Request-Code könnte funktionieren. Ansonsten gibt es noch finishActivityFromChild(), das ich aber noch nie verstanden habe.
 

Ähnliche Themen

D
  • Data2006
Antworten
14
Aufrufe
484
jogimuc
J
B
Antworten
4
Aufrufe
472
bb321
B
R
  • Robby1950
2
Antworten
23
Aufrufe
1.007
Robby1950
R
Zurück
Oben Unten