¿Hay recomendaciones para los valores de los códigos de solicitud en Android?

Ahora estoy usando números aleatorios para los códigos de solicitud. Por lo tanto, cada vez que agrego nueva actividad para startActivityForResult necesito comprobar todas las otras actividades para evitar colisiones. ¿Puede haber alguna práctica para definir valores, no coloidable por diseño? ¿Qué piensas?

Si todavía necesita comprobar el resultado de una actividad y, como las estructuras visualmente pulidas, compruebe este método.

Declare la clase interna dentro de su clase de actividad:

class RequestCode { static final int IMPORT = 100; static final int WRITE_PERMISSION = 101; } 

Utilice un código al iniciar la actividad:

 startActivityForResult(intent, RequestCode.IMPORT); 

Compruebe el resultado:

 public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RequestCode.IMPORT && resultCode == RESULT_OK) { //... } } 

En realidad no es necesario comprobar todas sus actividades y no importa mucho si tiene los mismos valores en diferentes actividades.

La idea de los códigos de solicitudes es que usted, en su Actividad X, en onActivityResult() puede distinguir entre los resultados de diferentes solicitudes iniciadas con startActivityForResult() .

Así que si tiene 3 diferentes startActivityForResult() en su actividad, necesitará 3 códigos de solicitud diferentes para poder distinguirlos en onActivityResult() – para que pueda saber qué resultado pertenece a qué inicio . Pero si usted tiene otra Actividad Y en la que está haciendo algo similar, no importa cuando los códigos de solicitud son iguales en la Actividad X.

El incremento de un número está garantizado para ser libre de colisión (hasta que se envuelve). En realidad no debe suceder a menos que utilice muchos de ellos.

Usted podría agregar una clase a su proyecto que le da número. Por ejemplo

 public class GlobalStuff { private static final AtomicInteger seed = new AtomicInteger(); public static int getFreshInt() { return seed.incrementAndGet(); } } 

Ahora en su código, siempre que necesite usar un número en lugar de

 public void doSomething() { startActivityForResult(intentA, 342); } 

Hazlo como

 private static final int REQUEST_CODE = GlobalStuff.getFreshInt(); public void doSomething() { startActivityForResult(intentA, REQUEST_CODE); } 

Y usted es seguro que usted no utiliza el mismo número dos veces. Al menos mientras el código se ejecuta en el mismo proceso.

El único problema es que no puede utilizar esos números en una instrucción switch (como en el case REQUEST_CODE: porque el conmutador necesita números que se conocen en tiempo de compilación

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.