2011-02-11 31 views
19

Me gustaría poder transferir datos de una actividad a otra. ¿Cómo puede hacerse esto?Transferir datos de una Actividad a otra Actividad Usar Intentos

+0

¿Qué código ha probado hasta ahora? ¿Qué no está funcionando? –

+0

Supongo que no está tratando de transferir un archivo ZIP. Eche un vistazo aquí http://stackoverflow.com/questions/4872856/data-transfer-from-one-activity-to-another-activity-on-button-click-event –

Respuesta

26

A través del código de abajo podemos enviar los valores entre las actividades

usar el siguiente código en la actividad de los padres

Intent myintent=new Intent(Info.this, GraphDiag.class).putExtra("<StringName>", value); 
startActivity(myintent); 

usar el siguiente código en la actividad infantil

String s= getIntent().getStringExtra(<StringName>); 
+0

Para aclarar a los novatos como yo, poniendo en el actividad infantil 'String s = getIntent(). getStringExtra (" StringName ");' trabajado. – CHarris

+0

¿Está solo disponible en el tipo de cadena dor? – rainman

0

Esperamos que pueda encuentre la respuesta desde aquí Send Data to Another Activity - Simple Android Login

+1

Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/ 8259 # 8259) para incluir las partes esenciales de la respuesta aquí y proporcionar el enlace para referencia. –

10

Wh en que pasar datos de una actividad a otra actividad realizan como esto

En la actividad de Padres:

startActivity(new Intent(presentActivity.this, NextActivity.class).putExtra("KEY_StringName",ValueData)); 

o como se muestra a continuación en la actividad de Padres

Intent intent = new Intent(presentActivity.this,NextActivity.class);  
intent.putExtra("KEY_StringName", name); 
intent.putExtra("KEY_StringName1", name1); 
startActivity(intent); 

En la Actividad infantil realizar como se muestra a continuación

TextView tv = ((TextView)findViewById(R.id.textViewID)) 
tv.setText(getIntent().getStringExtra("KEY_StringName")); 

o hacer como se muestra a continuación en la Actividad infantil

TextView tv = ((TextView)findViewById(R.id.textViewID)); 
TextView tv1 = ((TextView)findViewById(R.id.textViewID1)) 

/* Get values from Intent */ 
Intent intent = getIntent();   
String name = intent.getStringExtra("KEY_StringName"); 
String name1 = intent.getStringExtra("KEY_StringName1"); 

tv.setText(name); 
tv.setText(name1); 
0

sólo hay que enviar extras, mientras que llamando a su intención

así:

Intención intención = new Intent (getApplicationContext(), SecondActivity.class); intent.putExtra ("Nombre de variable", "Valor que desea pasar"); startActivity (intención);

Ahora en el método OnCreate de su SecondActivity se puede recuperar los extras como esto

Si el valor de u enviaron estaba en "largo"

mucho valor = getIntent(). GetLongExtra ("Nombre de la variable, que enviaste como un extra ", defaultValue (puedes darle cualquier cosa));

Si el valor de u envió fue una "Cadena"

valor String = getIntent() getStringExtra ("Nombre de la variable que ha enviado como un extra.");

Si el valor de u enviaron era un "booleano"

valor booleano = getIntent() getStringExtra ("Nombre de la variable que ha enviado como un extra", defaultValue).;

13

Hay varias maneras en que puede acceder a variables u objetos en otras clases o actividades.

A. Base de datos

B.Preferencias compartidas.

C. serialización de objetos.

D. Una clase que puede contener datos comunes se puede denominar como Utilidades comunes, depende de usted.

E. Pasar datos a través de Intentos e Interfaz Parcelable.

Depende de las necesidades de su proyecto.

A. base de datos

SQLite es una base de datos de código abierto que se incrusta en Android. SQLite admite características de bases de datos relacionales estándar como sintaxis SQL, transacciones y declaraciones preparadas.

Tutoriales - http://www.vogella.com/articles/AndroidSQLite/article.html

B. Preferencias compartidas

suponga que desea almacenar nombre de usuario. Entonces ahora habrá dos cosas: una clave Nombre de usuario, Valor Valor.

Cómo almacenar

// Create object of SharedPreferences. 
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
//now get Editor 
SharedPreferences.Editor editor = sharedPref.edit(); 
//put your value 
editor.putString("userName", "stackoverlow"); 

//commits your edits 
editor.commit(); 

Usando putString(), putBoolean(), putInt(), putFloat(), putLong() Puede guardar sus dtatype deseada.

Cómo buscar a

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
String userName = sharedPref.getString("userName", "Not Available"); 

http://developer.android.com/reference/android/content/SharedPreferences.html

C. serialización de objetos

serlization objeto se utiliza si queremos salvar a un estado de objeto para enviarlo a través de la red o usted puede usarlo para su propósito también.

granos de utilizar Java y almacenar en él como uno de sus campos y captadores de uso y setter para que

JavaBeans son clases Java que tienen propiedades. Piense en las propiedades como variables de instancia privadas. Dado que son privados, la única forma de acceder a ellos desde el exterior de su clase es a través de los métodos de la clase: . Los métodos que cambian el valor de una propiedad se llaman métodos setter, y los métodos que recuperan el valor de una propiedad se llaman métodos getter.

public class VariableStorage implements Serializable { 

    private String inString ; 

    public String getInString() { 
     return inString; 
    } 

    public void setInString(String inString) { 
     this.inString = inString; 
    } 


} 

Establecer la variable en usted envía método mediante el uso de

VariableStorage variableStorage = new VariableStorage(); 
variableStorage.setInString(inString); 

A continuación, utilice Serialzation objeto a serializar este objeto y en su otra clase deserializar este objeto.

En la serialización, un objeto se puede representar como una secuencia de bytes que incluye los datos del objeto, así como información sobre el tipo del objeto y los tipos de datos almacenados en el objeto.

Después de escribir un objeto serializado en un archivo, se puede leer del archivo y deserializar, es decir, la información de tipo y los bytes que representan el objeto y sus datos se pueden usar para recrear el objeto en la memoria.

Si desea tutorial para este referirse este enlace

http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html

Get variable in other classes

D. CommonUtilities

Puede hacer una clase por su cuenta propia que puede contener datos común, que con frecuencia necesita en su proyecto.

Muestra

public class CommonUtilities { 

    public static String className = "CommonUtilities"; 

} 

E. pasar datos a través Intentos

Consulte este tutorial para esta opción de pasar datos.

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

+0

Otro método es utilizar una clase Singleton que se puede ejecutar en toda la aplicación –

+0

Gracias, amigo. Realmente ayudó. Tenía un valor entero que quería compartir entre diferentes actividades. En mi código actual, envío datos de la actividad A a la actividad B, luego de la actividad B al fragmento B. Si los datos cambian en el Fragmento B, transfiero el cambio a la actividad B a través de una interfaz. Luego, cuando termina la actividad B, envío los datos a la actividad A y eso ni siquiera está completo y tengo algunos errores de corrección. El uso de la clase CommonUtilities es una solución mucho mejor a mi problema. Definitivamente cambiaré a eso. – Reza

1

datos que pasan de una actividad a otra en Android

Intent intent = new Intent(context, YourActivityClass.class); 
intent.putExtra(KEY, <your value here>); 

startActivity(intent); 

Recuperación de datos de paquete de la actividad androide

Intent intent = getIntent(); 
    if (intent!=null) { 
    String stringData= intent.getStringExtra(KEY); 
    int numberData = intent.getIntExtra(KEY, defaultValue); 
    boolean booleanData = intent.getBooleanExtra(KEY, defaultValue); 
    char charData = intent.getCharExtra(KEY, defaultValue); } 
0

su propósito

Supongamos que quiere pasar de Actividad A a Actividad B.

por lo que utilizar una intención de cambiar la actividad

Activity Switch

el código típica se parece a esto -

En la Actividad A [A.class]

//// Create a New Intent object 
Intent i = new Intent(getApplicationContext(), B.class); 

/// add what you want to pass from activity A to Activity B 
i.putExtra("key", "value"); 

/// start the intent 
startActivity(i); 

En la actividad B [SEGUNDO.Clase]

Y para obtener los datos de la Actividad Niño

Intent i = getIntent(); 

if (i!=null) { 
    String stringData= i.getStringExtra("key"); 
} 
0

Esto funciona mejor:

A través del código de abajo podemos enviar los valores entre las actividades

utilizar el siguiente código en la actividad principal (CLASE DE PADRE/CLASE DE ENVÍO DE VALOR)

Intent myintent=new Intent(<PARENTCLASSNAMEHERE>.this,<TARGETCLASSNAMEHERE>.class).putExtra("<StringName>", value); 
startActivity(myintent); 

usar el siguiente código en la actividad infantil (TARGET CLASE/ACTIVIDAD)

String s= getIntent().getStringExtra(<StringName>); 

favor ver aquí que "nombreDeCadena" es el nombre que la actividad de destino/niño coge mientras que el "valor" es el nombre de la variable, lo mismo que en la clase padre/destino/envío.

Cuestiones relacionadas