1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Schließen eines Views aus einer fremden Class

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Tai, 08.07.2009.

  1. Tai, 08.07.2009 #1
    Tai

    Tai Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    07.06.2009
    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?
     
  2. Temar, 08.07.2009 #2
    Temar

    Temar Erfahrener Benutzer

    Beiträge:
    214
    Erhaltene Danke:
    14
    Registriert seit:
    25.06.2009
    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.


    Beschreib doch mal genauer was du da eigentlich machen willst.
     
  3. Tai, 08.07.2009 #3
    Tai

    Tai Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    07.06.2009
    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
     
  4. Temar, 08.07.2009 #4
    Temar

    Temar Erfahrener Benutzer

    Beiträge:
    214
    Erhaltene Danke:
    14
    Registriert seit:
    25.06.2009
    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
        }
    }
    
     
  5. Tai, 08.07.2009 #5
    Tai

    Tai Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    0
    Registriert seit:
    07.06.2009
    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
     
  6. Temar, 08.07.2009 #6
    Temar

    Temar Erfahrener Benutzer

    Beiträge:
    214
    Erhaltene Danke:
    14
    Registriert seit:
    25.06.2009
    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
     
  7. miracle2k, 09.07.2009 #7
    miracle2k

    miracle2k Android-Hilfe.de Mitglied

    Beiträge:
    89
    Erhaltene Danke:
    15
    Registriert seit:
    03.07.2009
    finishActivity() mit explizitem Request-Code könnte funktionieren. Ansonsten gibt es noch finishActivityFromChild(), das ich aber noch nie verstanden habe.
     

Diese Seite empfehlen