Pregunta getIntExtra siempre devuelve el valor predeterminado


Estoy tratando de pasar un número entero entre actividades usando un intento. La actividad fuente hace que las llamadas info.id sean el elemento seleccionado de un ListView.

Intent intent = new Intent(myActivity.this, newClass.class); 
intent.putExtra("selectedItem", info.id); 
this.startActivity(intent); 

La actividad objetivo recupera la intención usando getIntent luego llamadas

int iSelectedItem = intent.getIntExtra("selectedItem", -1); 

iSelectedItem siempre es -1 en lugar del valor pasado a putExtra. ¿Puede alguien decirme lo que estoy haciendo mal o malinterpretarlo? uso de intenciones?


15
2018-01-26 04:24


origen


Respuestas:


El problema es que info.id será 'largo' y no se convertirá en 'int'. Tratar

long iSelectedItem = intent.getLongExtra("selectedItem", -1)

20
2017-09-01 13:33



No encuentro putIntExtra() método. Así que terminé con lo siguiente:

intent.putExtra("jobId", 1);

y

Integer.parseInt(getIntent().getExtras().get("jobId").ToString());

Utilice try y catch para manejar Excepciones.

ACTUALIZAR

Más tarde descubrí que estaba pasando jobId como una cadena en putExtra() método, por lo tanto getIntExtra() Siempre devolvió el valor predeterminado.

Entonces @Grant es correcto. Tú debe pasar un valor entero en putExtra() método para usar getIntExtra() método.


13
2018-01-10 05:13



Tuve este problema y fue algo simple.

Comprueba si estás usando OnActivityResult ... than, no tienes para usar getIntent () para obtener los extras, debe usar la intención pasas como parámetro.

En tu caso debería ser algo como esto:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (resultCode == RESULT_OK) {
        int iSelectedItem = intent.getIntExtra("selectedItem", -1);             
        Log.d("DEBUG", "check iSelectedItem = " + iSelectedItem);
    }
}

observe que no estoy usando getIntent (), sino el intento de argumento.

(PD: si llama a muchas actividades esperando resultados, es mejor verificar si el intento es = nulo)

Espero que ayude.


1
2017-07-05 18:02



Fácil:

Bundle bundle = getIntent().getExtras();
int iSelectedItem = bundle.getInt("selectedItem", -1);   

Ahora, si está utilizando StartActivityForResult y desea devolver algunos datos, desde la actividad secundaria, recuerde que debe usar onActivityResult.

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == RESULT_OK) {
    int iSelectedItem = intent.getExtras.getInt("selectedItem", -1);             
    Log.d("DEBUG", "check iSelectedItem = " + iSelectedItem);
  }
}

Recuerde, es lo mismo que obtener extras de otra actividad, simplemente usando bundle.getInt, en este ejemplo, getExtras devuelve un paquete, por lo tanto, a través de este paquete, puede obtener cualquier información que haya enviado desde el resultado.


1
2017-10-18 20:31



En mi caso, fue porque creé el objeto con la variable de miembro mId declarada como cadena

public class Application {

private String mId;
....
}

intent.putExtra("id", myApplication.getId());

y como tal, el Extra pasa como una cadena. simplemente cambie su variable miembro a int, obtendrá la idea;)


0
2017-10-26 04:08



    int sub_menu_id = 0;
    int question_part = 0;

    if (savedInstanceState == null) {
        Bundle extras = getIntent().getExtras();
        if (extras == null) {
            sub_menu_id = -1;
            question_part = -1;
        } else {
            sub_menu_id = extras.getInt("sub_menu_id");
            question_part = extras.getInt("question_part");
        }
    }

    Log.d("DREG", "sub_menu_id: " + sub_menu_id + "\nquestion_part: " + question_part);

0
2017-11-27 13:31