Hola, soy un nuevo principiante en el desarrollo de Android. Intenté varias veces resolver mi problema, pero no pude ayudarme. Creé una pantalla de inicio de sesión simple una vez que el usuario ingresó el nombre de usuario y la contraseña. Simplemente quiero mostrarlo en la siguiente actividad. Usé putExtra y getExtra pero los valores son nulos todo el tiempo. Este es mi codigo

Intent i = new Intent(Data1.this , Data2.class);
            i.putExtra("uname",username.getText().toString());
            i.putExtra("pass",password.getText().toString());
            Log.d("username",username.getText().toString());
            Log.d("password",password.getText().toString());
            startActivity(i);

 data = (TextView)findViewById(R.id.txt);

     Intent i = this.getIntent();
     u = i.getStringExtra("username");
     p = i.getStringExtra("password");

     data.setText(u+" Successfully logged in User Name - "+ u + " Password - "+ p);
0
ChangWook 30 abr. 2017 a las 08:18

3 respuestas

La mejor respuesta

Has pasado los datos al siguiente intento correctamente usando PutExtra pero en el nuevo intento cuando has usado getStringExtra has usado otra variable de cadena que es completamente diferente de la que has pasado. Prueba este ejemplo debería funcionar. debería usar i.getStringExtra ("uname"); y i.getStringExtra ("pasar"); en lugar de lo que has pasado.

La clase pública Data1 extiende AppCompatActivity {

EditText username;
EditText password;
Button btn;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_data1);

    username = (EditText)findViewById(R.id.edusername);
    password = (EditText)findViewById(R.id.edpassword);
    btn = (Button)findViewById(R.id.btn);


    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(Data1.this , Data2.class);
            i.putExtra("uname",username.getText().toString());
            i.putExtra("pass",password.getText().toString());
            Log.d("username",username.getText().toString());
            Log.d("password",password.getText().toString());
            startActivity(i);
        }
    });
}

}

Data2 de clase pública extiende AppCompatActivity {

TextView data;
String u;
String p;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_data2);

    data = (TextView)findViewById(R.id.txt);
   // Intent i = getIntent();
    Intent i = this.getIntent();
     u = i.getStringExtra("uname");
     p = i.getStringExtra("pass");



    data.setText(u+" Successfully logged in User Name - "+ u + " Password - "+ p);
}

}

1
Shehani Perera 30 abr. 2017 a las 08:21

Usted pasa el valor usando

i.putExtra("uname",username.getText().toString());
i.putExtra("pass",password.getText().toString());

Y obteniendo valor usando

u = i.getStringExtra("username");
p = i.getStringExtra("password");

Aquí debe usar la misma clave que pasó en la intención, por lo que debe usar "uname" en lugar de "username" y "pass" en lugar de "password".

Ejemplo: FirstActivity.java

i.putExtra("key", "value");

SecondActivity.java

i.getStringExtra("key");
0
Upendra Shah 30 abr. 2017 a las 08:14

Está obteniendo valores nulos porque las cadenas no son las mismas en el método put y get. Y los valores siempre se almacenan en la misma clave. Por lo tanto, cambie su código en el método get como as-

 Intent i = this.getIntent();
 u = i.getStringExtra("uname");
 p = i.getStringExtra("pass");`
0
Ana 30 abr. 2017 a las 10:05