Schließen eines Views aus einer fremden Class

T

Tai

Neues Mitglied
Threadstarter
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?
 
T

Temar

Fortgeschrittenes Mitglied
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.
 
T

Tai

Neues Mitglied
Threadstarter
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
 
T

Temar

Fortgeschrittenes Mitglied
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
    }
}
 
T

Tai

Neues Mitglied
Threadstarter
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
 
T

Temar

Fortgeschrittenes Mitglied
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
 
M

miracle2k

Ambitioniertes Mitglied
finishActivity() mit explizitem Request-Code könnte funktionieren. Ansonsten gibt es noch finishActivityFromChild(), das ich aber noch nie verstanden habe.
 
Thread starter Similar threads Forum Replies Date
S Android App Entwicklung 1
Oben Unten