Wie nennen startactivityforresult, die von einer nicht-Tätigkeit-Klasse, um den resuts
Ist es möglich, den Anruf startActivityForResult()
aus einem nicht-activity Klasse um die Ergebnisse zu bekommen?
Szenario ist so etwas wie dieses:
Habe ich eine Klasse NonActivity
(nicht abgeleitet von der Tätigkeit als nicht ein UI).
Diese Klasse haben Bündel von Funktionen(Schritte grundsätzlich auszuführen.
Einer der Schritte erfordert, um zu zeigen, UI(Aktivität) und dann das Ergebnis zu erhalten (Benutzer etwas eingibt).
Dann in der Lage gewesen zu verwenden dass die Daten in folgenden Schritten.
Wie kann dies erreicht werden, ohne die Ableitung von Aktivitäten der Klasse, wie ich haben keine UI-Komponente?
Auch, da ich nicht möchte, eine Ableitung von der activity-Klasse, dass heißt ich kann nicht überschreiben OnActivityResult()
. Wo Ergebnisse kommen tatsächlich aus?
InformationsquelleAutor user1950373 | 2013-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
startActivityForResult()
ist nur von echten on-screen-Aktivitäten, denn es ist eine Methode, in, sowie, Aktivität. Bitte das Design Ihrer Anwendung, so dass die Benutzer-Schnittstelle ist getrieben von Aktivitäten.Auf der anderen Seite, wenn Sie Ihre nicht-Aktivität der Klasse initialisiert wird und eine Bildschirm-Aktivität, könnte passieren, dass die Instanz der Aktivität, die der Klasse als parameter im Konstruktor übergeben und es verwenden, um das starten anderer Aktivitäten.
Aber vorsichtig sein. Mit dieser Methode erhöht sich die Gefahr von einem memory leak, da der externe Klasse (Utils in meinem Beispiel) könnte eine Referenz auf die Aktivität, selbst nachdem es vorbei.
Wenn alles, was Sie tun möchten, ist auf Daten zugreifen, dann könnten Sie versuchen, es zu schreiben, um SharedPreferences oder eine Datenbank oder einzelne Dateien und dann mit dem Anwendungskontext (der übergeben über einen Konstruktor wieder) zu Lesen. Dies reduziert die Gefahr von einem memory leak. So etwas wie:
BEISPIEL-CODE
Haupttätigkeit:
Utils-Klasse (startet für Ergebnis):
Test Tätigkeit:
Ich habe es gerade ausprobiert und es funktioniert einwandfrei. Lassen Sie mich nach ein paar Beispiel-code.
Fertig!
ja, ich Stimme mit u , wir überschreiben muss onActivityResult in der Aktivität anstelle von non activity Klasse als OP zu Fragen
Ja, ich dachte mir, dass ist es, was Sie meinte, aber warf sich in meine 2 cents. +1 für Klarheit 🙂
InformationsquelleAutor
StartActivityForResult aus einer Klasse mit einem fragment ohne sichtbare GUI. Vielleicht finden Sie etwas wie dies in einer utility-Klasse.
sehen runGetUserAccount unten. Es schafft sich seine eigenen fragment und führt eine startActivityForResult. Dann ist es seine eigene onActivityResult.
nur mit der Aktivität, um die fragment-manager. Nichts besonderes, geschieht etwas Magisches mit ihm. Ich tatsächlich aufgerufen wird dieser code von einem fragment und gegossen, um die Aktivität vor dem Aufruf. Havving eine Klasse, nahm fragment als input-ich konnte nicht nennen es von einer Aktivität aus, so dass Sie nicht wiederverwendbar ist. Es funktioniert nichts anderes, wenn Sie einfach anrufen getActivityForResult aus einem fragment das Ergebnis kommen würde, zurück auf die Haupt-Aktivität. Vielleicht ist behoben, wir sind an welche version N jetzt. Vielleicht verwenden Sie diese Methode, und hilft Ihnen heraus. Viel Glück
InformationsquelleAutor
Wenn Sie möchten, dass das Ergebnis wieder von der Aktivität zu Ihrer normalen Klasse, eigentlich ist es eine Klasse mit einem benutzerdefinierten adapter.
Hoffe, dies kann Ihnen eine Idee geben,
InformationsquelleAutor