Verwenden Sie startActivityForResult aus Nicht-Aktivität

Ich habe MainActivity, die eine Aktivität und andere Klasse (die eine einfache Java-Klasse ist), wir `ll nennen es" SimpleClass ". Jetzt möchte ich aus dieser Klasse den Befehl startActivityForResult ausführen.

Jetzt habe ich aber, dass ich diese Klasse (SimpleClass), nur MainActivity Kontext passieren könnte, ist das Problem, dass Sie konkurrieren kontext.startActivityForResult (…);

  • Android ListView setSelection () scheint nicht zu funktionieren
  • Wie zu schweben schwimmende Aktion-Taste mit Android-Aktivität Übergang?
  • Android-Selektor mit Hintergrundbild und Farbverlauf
  • Wie man die Ansichten am unteren Rand des Bildschirms ausrichtet?
  • Töte alle Aktivitäten, wenn die HOME-Taste android gedrückt wird
  • Warum wird der Android-Browser diesen Absatz nicht über die volle Browserbreite überspannen?
  • Also die einzige Möglichkeit, SimpleClass zu verwenden, um 'startActivityForResult; Ist es, die Referenz von MainActivity als Aktivitätsvariable an die SimpleClass so etwas weiterzugeben:

    Innerhalb der MainActivity-Klasse erstelle ich die Instanz von SimpleClass auf diese Weise:

    SimpleClass simpleClass=new SimpleClass(MainActivity.this); 

    So wie SimpleClass aussieht:

     public Class SimpleClass { Activity myMainActivity; public SimpleClass(Activity mainActivity) { super(); this.myMainActivity=mainActivity; } .... public void someMethod(...) { myMainActivity.startActivityForResult(...); } } 

    Jetzt seine Arbeit, aber ist nicht eine richtige Art, dies zu tun? Ich habe Angst, dass ich in der Zukunft etwas Gedächtnisverluste haben könnte.

    Vielen Dank. Strahl.

  • Verwenden Sie Holo Thema auf Android <4.0
  • Android Studio maximale Anzahl von Zeilen Logcat
  • Wie integriere ich ZXing Library zu Android Studio für Barcode Scannen?
  • Gibt es einen Zuhörer, um auf Änderungen in der Lautstärke in Android zu hören?
  • Beobachten von Änderungen in Android-Beobachter für Audio.Media.EXTERNAL_CONTENT_URI
  • Android Dialog Thema macht Symbol zu hell
  • 3 Solutions collect form web for “Verwenden Sie startActivityForResult aus Nicht-Aktivität”

    Ich weiß nicht, ob dies eine gute Praxis ist oder nicht, aber casting a Context object to an Activity object kompiliert gut.

    Versuche dies:

     if (mContext instanceof Activity) { ((Activity) mContext).startActivityForResult(...); } else { Log.e("mContext should be an instanceof Activity."); } 

    Dies sollte kompilieren, und die Ergebnisse sollten an die tatsächliche Aktivität gehalten werden, die den Kontext hält.

    Wenn Sie das Ergebnis aus der vorherigen Aktivität erhalten müssen, dann muss Ihre Anrufklasse vom Typ Aktivität sein.

    Was ist der Zweck von Ihnen Aufruf Activity.startActivityForResult() wenn Sie nie das Ergebnis (zumindest nach dem Beispielcode, den Sie gebucht haben).

    Hat myMainActivity alles mit dem Ergebnis? Wenn ja, dann mach einfach SimpleClass eine Unterklasse von Activity und SimpleClass das Ergebnis aus SimpleClass selbst.
    Wenn myMainActivity das Ergebnis braucht, dann solltest du vielleicht den Code umgestalten, um die Aktivität von myMainActivity zu starten.

    Bessere Lösung ist:

    1. Machen Sie SimpleClass eine Unterklasse Ihrer Activity
    2. Aufruf einer anderen Aktivität als startActivityForResult
    3. Umgang mit dem Ergebnis in SimpleClass selbst
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.