utiliser startActivityForResult de non-activité

J’ai MainActivity qui est une activité et une autre classe (qui est une classe Java simple), nous l’appellerons “SimpleClass”. Maintenant, je veux exécuter à partir de cette classe la commande startActivityForResult.

maintenant je pense que je pourrais passer cette classe (SimpleClass), seul le contexte de MainActivity, le problème est que vous ne pouvez pas lancer context.startActivityForResult (…);

La seule façon de faire en sorte que SimpleClass utilise ‘startActivityForResult; est de passer la référence de MainActivity en tant que variable d’activité à SimpleClass, par exemple:

dans la classe MainActivity, je crée l’instance de SimpleClass de cette façon:

SimpleClass simpleClass=new SimpleClass(MainActivity.this); 

maintenant, voici à quoi ressemble SimpleClass:

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

maintenant son fonctionnement, mais n’est pas une manière appropriée de le faire? J’ai peur que je puisse avoir des memory leaks dans le futur.

Merci. rayon.

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

Essaye ça:

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

Cela devrait comstackr et les résultats devraient être livrés à l’activité réelle détenant le contexte.

Si vous devez obtenir le résultat de l’activité précédente, votre classe d’appel doit être de type Activité.

Quel est le but de votre appel à Activity.startActivityForResult() si vous n’utilisez jamais le résultat (au moins selon l’exemple de code que vous avez publié).

myMainActivity fait-il quelque chose avec le résultat? Si c’est le cas, il suffit alors de faire de SimpleClass une sous-classe d’Activity et de gérer le résultat dans SimpleClass lui-même.
Si myMainActivity besoin du résultat, vous devriez peut-être modifier le code pour démarrer l’activité à partir de myMainActivity .

Une meilleure solution est:

  1. Faire de SimpleClass une sous-classe de votre classe d’ Activity
  2. appeler une autre activité comme startActivityForResult
  3. gérer le résultat dans SimpleClass lui-même