Esto me ha estado matando durante dos días. Tengo una actividad principal A que llama una segunda actividad B. La actividad B simplemente presenta al usuario una vista de lista. Cuando presiono un elemento en la vista de lista, quiero que un par de cadenas pasen a la Actividad principal A y Activiy B finalizará.Android onActivityResult siempre es 0
El problema es que siempre obtengo un código de resultado de 0 y el paquete de datos es nulo. Realmente no entiendo por qué está sucediendo esto.
Aquí está mi código.
Comience la actividad B para el resultado;
Test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(recipeActivity.this, BrowseLoadRecipes.class);
startActivityForResult(i, RECIPE_CHOOSER);
}
});
Esto inicia la segunda Actividad bien. La actividad B completa una vista de lista y cuando hago clic en un elemento intento devolver datos a la actividad de llamada A.
Cualquier texto en este momento, así que utilicé lo siguiente en la Actividad B;
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Bundle bundle = new Bundle();
bundle.putString("TEXT", "Please work... pleeeeaasee");
Intent mIntent = new Intent();
mIntent.putExtras(bundle);
setResult(RESULT_OK, mIntent);
finish();
}
});
En la actividad de llamada, tengo la siguiente respuesta para la devolución de la siguiente manera;
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
switch(requestCode) {
//TODO
case RECIPE_CHOOSER:
Toast.makeText(getApplicationContext(), "In recipe return", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "resultCode is " + String.valueOf(resultCode), Toast.LENGTH_SHORT).show();
if (resultCode == RESULT_OK) {
Bundle b = getIntent().getExtras();
Toast.makeText(getApplicationContext(), "Returned " + b.getString("TEXT"), Toast.LENGTH_LONG).show();
}
if (resultCode == RESULT_CANCELED) {
}
break;
}
}
}
puedo ver que el código de petición se devuelve correctamente, pero el resultcode es siempre un 0 y los datos siempre es un valor nulo.
He revisado la depuración y el setResult está haciendo su trabajo y el paquete sí tiene los datos que estoy pasando, pero se perdió en algún momento en el camino.
¿Hay algo en el manifiesto que me falta o algo así? Ha matado mi progreso en este proyecto hasta ahora.
Cualquier ayuda sería realmente apreciada.
Gracias, Dean
Creo que esto va a funcionar. Lo intentaré ahora y te responderé en cinco minutos. Gracias por la respuesta. – Dean
Dave ... si estuviera allí contigo ahora, te compraría una pinta fría y adorable. Funcionó perfectamente. Gracias de nuevo ... – Dean
Después de pensar en esto, ahora sé la razón por la cual mi código original no funcionaba. La intención de iniciar primero (Actividad B) es realmente solo una intención del titular de la pestaña frontal que luego inicia dos intenciones más en dos pestañas diferentes (la primera pestaña para ver los archivos locales, la segunda para ver los archivos ubicados en la web). El principal intento de regreso debería haber sido el primer intento, por lo tanto, la excelente respuesta de Daves me señala de nuevo al padre. Yo viví y aprendí hoy. – Dean