studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java android

java - programacion - use startActivityForResult de la no actividad



manual de programacion android pdf (3)

La mejor solución es:

  1. Hacer SimpleClass una subclase de su clase de Activity
  2. llamando a otra actividad como startActivityForResult
  3. manejando el resultado dentro de SimpleClass

Tengo MainActivity que es una actividad y otra clase (que es una clase simple de Java), lo llamaremos "SimpleClass". ahora quiero ejecutar desde esa clase el comando startActivityForResult.

ahora pensé que podría pasar esa clase (SimpleClass), solo el contexto de MainActivity, el problema es que no puedes ejecutar context.startActivityForResult (...);

así que la única forma de hacer que SimpleClass use ''startActivityForResult; es pasar la referencia de MainActivity como una variable de actividad a SimpleClass algo así:

dentro de la clase MainActivity, creo la instancia de SimpleClass de esta manera:

SimpleClass simpleClass=new SimpleClass(MainActivity.this);

ahora así es como se ve SimpleClass:

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

ahora está funcionando, pero ¿no es una forma adecuada de hacer esto? Temo que podría tener algunas pérdidas de memoria en el futuro.

Gracias. rayo.


No sé si esto es una buena práctica o no, pero casting a Context object to an Activity object compila bien.

Prueba esto:

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

Esto debe compilarse, y los resultados deben entregarse a la actividad real que contiene el contexto.


Si necesita obtener el resultado de la actividad anterior, entonces su clase de llamada debe ser de tipo Actividad.

¿Cuál es el propósito de que llame a Activity.startActivityForResult() si nunca usa el resultado (al menos de acuerdo con el código de muestra que publicó).

¿ myMainActivity hace algo con el resultado? Si es así, simplemente haga de SimpleClass una subclase de Activity y maneje el resultado desde SimpleClass .
Si myMainActivity necesita el resultado, entonces quizás deba refactorizar el código para comenzar la actividad desde myMainActivity .