91 votes

utiliser startActivityForResult à partir de la non-activité

J'ai MainActivity qui est une Activité, et les autres classe(qui est une simple classe java), nous allons l'appeler "SimpleClass". maintenant, je veux courir à compter de cette classe de la commande startActivityForResult.

maintenant, je pensais que je pouvais passer la classe(SimpleClass), seulement MainActivity contexte, le problème est que, u ne peut pas exécuter contexte.startActivityForResult(...);

donc le seul moyen de prise de SimpleClass l'utilisation de 'startActivityForResult; est de passer la référence de MainActivity comme une Activité variable à la SimpleClass quelque chose comme ça:

à l'intérieur de la classe MainActivity-je créer l'instance de SimpleClass de cette façon:

SimpleClass simpleClass=new SimpleClass(MainActivity.this);

maintenant c'est comment SimpleClass ressemble:

public Class SimpleClass {

Activity myMainActivity;

   public SimpleClass(Activity mainActivity) {
       super();
       this.myMainActivity=mainActivity;    
   }
....


    public void someMethod(...) {
        myMainActivity.startActivityForResult(...);
    }

}

maintenant son travail, mais n'est pas une bonne façon de le faire? J'ai peur que je pourrais avoir quelques fuites de mémoire dans l'avenir.

merci. ray.

69voto

Some Noob Student Points 2832

Je ne sais pas si c'est une bonne pratique ou non, mais casting a Context object to an Activity object compile bien.

Essayez ceci: ((Activity) mContext).startActivityForResult(...)

Cela devrait compiler et les résultats devraient être livrés à l'activité réelle contenant le contexte.

4voto

codinguser Points 3979

Si vous avez besoin pour obtenir le résultat de l'Activité précédente, alors votre classe d'appel doit être de type d'Activité.

Quel est le but de vous appelant Activity.startActivityForResult() si vous n'utilisez jamais le résultat (au moins selon l'exemple de code que vous avez posté).

N' myMainActivity faire n'importe quoi avec le résultat? Si oui, alors seulement prendre SimpleClass une sous-classe de l'Activité et gérer les résultats à partir de l'intérieur d' SimpleClass lui-même.
Si myMainActivity des besoins du résultat, vous devriez peut-être refactoriser le code au début de l'activité à partir d' myMainActivity.

1voto

gt_ebuddy Points 6551

Une meilleure solution est:

  1. Faire de SimpleClass une sous-classe de votre classe Activity
  2. appeler une autre activité en tant que startActivityForResult
  3. traitement du résultat dans SimpleClass lui-même

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X