sirve que putextra pasar para otro objetos intent getintent getextras from entre datos data activity actividades android android-intent

android - que - Cómo usar putExtra() y getExtra() para datos de cadena



put extra data android (14)

Android ha introducido nuevos métodos en la clase Intent .

  • Use hasExtra() para verificar si la intención tiene datos en la clave.
  • Puedes usar ahora getStringExtra() directamente.

Pasar datos

intent.putExtra(USER_NAME, "user");

Obtener datos

String userName; if (getIntent().hasExtra(USER_NAME)) { userName = getIntent().getStringExtra(USER_NAME); }

Siempre pongo las teclas en constantes para las mejores prácticas (para evitar errores manuales)

public interface PutExtraConstants { String USER_NAME = "USER_NAME"; }

¿Puede alguien decirme cómo usar getExtra() y putExtra() exactamente para getExtra() ? 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 actividad.

Intent i = new Intent(FirstScreen.this, SecondScreen.class); String keyIdentifer = null; i.putExtra(strName, keyIdentifer );

y luego en el 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 desafortunadamente estoy atascado aquí. Por favor ayuda.

Gracias,

Edición: aquí la cadena que estoy tratando de pasar de una pantalla a otra es dinámica. Es decir, tengo un editText donde obtengo una cadena de cualquier tipo de usuario. Luego, con la ayuda de myEditText.getText().toString() . Estoy obteniendo el valor ingresado como una cadena, entonces tengo que pasar estos datos.


Es muy fácil implementar la intent en Android. Te lleva a pasar de una actividad a otra actividad, tenemos dos métodos putExtra(); y getExtra(); Ahora les muestro el ejemplo.

Intent intent = new Intent(activity_registration.this, activity_Login.class); intent.putExtra("AnyKeyName", Email.getText().toString()); // pass your values and retrieve them in the other Activity using AnyKeyName startActivity(intent);

Ahora tenemos que obtener el valor del parámetro AnyKeyName , el código mencionado a continuación ayudará a hacer esto

String data = getIntent().getExtras().getString("AnyKeyName"); textview.setText(data);

Podemos configurar fácilmente el valor de recepción desde Intent , donde sea necesario.


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"); }

¡aclamaciones!


Más simple

lado remitente

Intent i = new Intent(SourceActiviti.this,TargetActivity.class); i.putExtra("id","string data"); startActivity(i)

lado receptor

Intent i = new Intent(SourceActiviti.this,TargetActivity.class); String strData = i.getStringExtra("id");


Mejor Método ...

EnviandoActividad

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);

RecibiendoActividad

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, use la defaultkey como datos.


Poner cadena en objeto de intención

Intent intent = new Intent(FirstActivity.this,NextAcitivity.class); intent.putExtra("key",your_String); StartActivity(intent);

NextAcitvity en el método onCreate get String

String my_string=getIntent().getStringExtra("key");

eso es metodo facil y corto


Simple, en primera actividad-

EditText name= (EditText) findViewById(R.id.editTextName); Button button= (Button) findViewById(R.id.buttonGo); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(MainActivity.this,Main2Activity.class); i.putExtra("name",name.getText().toString()); startActivity(i); } });

En segunda actividad-

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); TextView t = (TextView) findViewById(R.id.textView); Bundle bundle=getIntent().getExtras(); String s=bundle.getString("name"); t.setText(s); }

Usted puede agregar si / else condiciones si lo desea.


Un pequeño addendum: no tiene que crear su propio nombre para la clave, android lo proporciona, f.ex. Intent.EXTRA_TEXT . Modificando la respuesta aceptada:

Intent i = new Intent(FirstScreen.this, SecondScreen.class); String strName = null; i.putExtra(Intent.EXTRA_TEXT, strName);

Luego, para recuperar el valor intente algo como:

String newString; Bundle extras = getIntent().getExtras(); if(extras == null) { newString= null; } else { newString= extras.getString(Intent.EXTRA_TEXT); }


Usa 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"); }


poner la cuerda primero

Intent secondIntent = new Intent(this, typeof(SecondActivity)); secondIntent.PutExtra("message", "Greetings from MainActivity");

recuperarlo después de eso

var message = this.Intent.GetStringExtra("message");

eso es todo ;)


poner la función

etname=(EditText)findViewById(R.id.Name); tvname=(TextView)findViewById(R.id.tvName); b1= (ImageButton) findViewById(R.id.Submit); b1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String s=etname.getText().toString(); Intent ii=new Intent(getApplicationContext(), MainActivity2.class); ii.putExtra("name", s); Toast.makeText(getApplicationContext(),"Page 222", Toast.LENGTH_LONG).show(); startActivity(ii); } }); getfunction public class MainActivity2 extends Activity { TextView tvname; EditText etname; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_activity2); tvname = (TextView)findViewById(R.id.tvName); etname=(EditText)findViewById(R.id.Name); Intent iin= getIntent(); Bundle b = iin.getExtras(); if(b!=null) { String j2 =(String) b.get("name"); etname.setText(j2); Toast.makeText(getApplicationContext(),"ok",Toast.LENGTH_LONG).show(); } }


Datos de inserción

import android.content.Intent; ... Intent intent = new Intent( this, MyActivity.class ); intent.putExtra( "paramName", "paramValue" ); startActivity( intent );

El código anterior podría estar dentro de la activity principal. " MyActivity.class " es la segunda Activity que queremos lanzar; debe incluirse explícitamente en su archivo AndroidManifest.xml .

<activity android:name=".MyActivity" />

Extraer datos

import android.os.Bundle; ... Bundle extras = getIntent().getExtras(); if (extras != null) { String myParam = extras.getString("paramName"); } else { //..oops! }

En este ejemplo, el código anterior estaría dentro de su archivo MyActivity.java .

Gotchas

Este método solo puede pasar strings . Entonces, digamos que necesita pasar un ArrayList a su ListActivity ; una posible solución es pasar una cadena separada por comas y luego dividirla en el otro lado.

Soluciones alternativas

Utilice las SharedPreferences


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); } } }


Intent intent = new Intent(view.getContext(), ApplicationActivity.class); intent.putExtra("int", intValue); intent.putExtra("Serializable", object); intent.putExtra("String", stringValue); intent.putExtra("parcelable", parObject); startActivity(intent);

AplicaciónActividad

Intent intent = getIntent(); Bundle bundle = intent.getExtras(); if(bundle != null){ int mealId = bundle.getInt("int"); Object object = bundle.getSerializable("Serializable"); String string = bundle.getString("String"); T string = <T>bundle.getString("parcelable"); }