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 (…);

  • Wie kann ich den Eintritt in den einheimischen Kalender speichern (Android & iOS)?
  • IPhone oder Android Apps, die eine SMS-basierte Authentifizierung verwenden?
  • Wie kann man die maximale Höhe eines Layouts in android einstellen?
  • RecyclerView onCreateViewHolder, der übermäßig beim schnellen Scrollen mit DPAD aufgerufen wird
  • Android - ImageView: setImageBitmap VS setImageDrawable
  • Wie kann ich getApplicationContext verspotten?
  • 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.

  • Wie deaktiviere ich den System-Sound-Effekt auf AlertDialog?
  • Android: Wie kann ich Parameter an AsyncTask's onPreExecute () übergeben?
  • Xerces auf Android
  • Probleme beim Debuggen von Android-Verschleiß über Bluetooth - Kann nicht mit localhost verbunden werden
  • Absicht URI, um Gmail App zu starten
  • Android Studio Google-Play-Services-Bibliothek
  • 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.