Cómo usar putExtra() y getExtra() para datos de cadena
¿Alguien puede decirme cómo utilizar exactamente getExtra()
y putExtra()
cuáles son las intenciones? En realidad tengo una variable de cadena, digamos str, que almacena algunos datos de cadena. Ahora quiero enviar estos datos de una actividad a otra.
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String keyIdentifer = null;
i.putExtra(strName, keyIdentifer );
y luego en SecondScreen.java
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.table);
TextView userName = (TextView)findViewById(R.id.userName);
Bundle bundle = getIntent().getExtras();
if(bundle.getString("strName")!= null)
{
//TODO here get the string stored in the string variable and do
// setText() on userName
}
}
Sé que es una pregunta muy básica pero lamentablemente estoy atrapado aquí. Por favor ayuda.
Gracias,
Editar: Aquí la cadena que intento pasar de una pantalla a otra es dinámica. Es decir, tengo un texto de edición donde obtengo la cadena que escriba el usuario. Luego con la ayuda de myEditText.getText().toString()
. Obtengo el valor ingresado como una cadena y luego tengo que pasar estos datos.
Utilice esto para "poner" el archivo...
Intent i = new Intent(FirstScreen.this, SecondScreen.class);
String strName = null;
i.putExtra("STRING_I_NEED", strName);
Luego, para recuperar el valor, intente algo como:
String newString;
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if(extras == null) {
newString= null;
} else {
newString= extras.getString("STRING_I_NEED");
}
} else {
newString= (String) savedInstanceState.getSerializable("STRING_I_NEED");
}
primera pantalla.java
text=(TextView)findViewById(R.id.tv1);
edit=(EditText)findViewById(R.id.edit);
button=(Button)findViewById(R.id.bt1);
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
String s=edit.getText().toString();
Intent ii=new Intent(MainActivity.this, newclass.class);
ii.putExtra("name", s);
startActivity(ii);
}
});
Segunda pantalla.java
public class newclass extends Activity
{
private TextView Textv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.intent);
Textv = (TextView)findViewById(R.id.tv2);
Intent iin= getIntent();
Bundle b = iin.getExtras();
if(b!=null)
{
String j =(String) b.get("name");
Textv.setText(j);
}
}
}
El mejor método...
Actividad de envío
Intent intent = new Intent(SendingActivity.this, RecievingActivity.class);
intent.putExtra("keyName", value); // pass your values and retrieve them in the other Activity using keyName
startActivity(intent);
Actividad de recepción
Bundle extras = intent.getExtras();
if(extras != null)
String data = extras.getString("keyName"); // retrieve the data using keyName
/// forma más corta de recibir datos.
String data = getIntent().getExtras().getString("keyName","defaultKey");
//Esto requiere API 12. //El segundo parámetro es opcional. Si keyName es nulo, utilice defaultkey
como datos.
Esto es lo que he estado usando, espero que ayude a alguien... simple y afectivo.
enviar datos
intent = new Intent(getActivity(), CheckinActivity.class);
intent.putExtra("mealID", meal.Meald);
startActivity(intent);
obtener datos
int mealId;
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(bundle != null){
mealId = bundle.getInt("mealID");
}
¡salud!