Tengo un ID de sesión de sesión que necesita usar varias actividades. ¿Cómo comparto esta información común entre múltiples actividades? Actualmente, estoy pasando los datos en el Intent pero no funciona correctamente. Para algunas actividades, paso otros datos, y los datos comunes se pierden.Cómo compartir los mismos datos entre múltiples actividades
Respuesta
- Utilice Application class para compartir datos en común.
- Use Shared Prefrences or databases or some sort of persistant storage.
Debe utilizar SharedPreferences como por debajo de los detalles, http://developer.android.com/guide/topics/data/data-storage.html#pref
uso compartido preferencias como este:
SharedPreferences myprefs= this.getSharedPreferences("user", MODE_WORLD_READABLE);
myprefs.edit().putString("session_id", value).commit();
Puede recuperar esta información a través de su aplicación como esta:
SharedPreferences myprefs= getSharedPreferences("user", MODE_WORLD_READABLE);
String session_id= myprefs.getString("session_id", null);
Debería usar intents cuando quiera comenzar otra actividad de su actividad actual ... también si la actividad del niño es totall Y depende de los datos de actividad de los padres ... las intenciones de uso
I no sabe qué es exactamente lo que el código se está tratando con, pero ¿ha tratado como éste
en su actividad actual, crear una intención
Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra(key, value);
startActivity(i);
luego en la otra actividad, recupere esos valores.
Bundle extras = getIntent().getExtras();
if(extras !=null) {
String value = extras.getString(key);
}
Usa la clase Singleton para compartir.
código de ejemplo
public class Category {
private static final Category INSTANCE = new Category();
public String categoryName = "";
public int categoryColor = 0;
public boolean status = false;
// Private constructor prevents instantiation from other classes
private Category() {}
public static Category getInstance() {
return INSTANCE;
}
}
en otra actividad/Clase para establecer el valor como:
Category cat;
cat=Category.getInstance();
cat.categoryName="some name";
cat.status=ture;
for getting the values every where you want in your application.
Category cat;
cat=Category.getInstance();
String sq=cat.categoryName;
boolean stat=cat.status;
La forma en que lo hago es que me extiendo una clase global de la actividad, y luego extender todo actividades reales con las que el usuario interactuará desde allí. Así es como aprendí a hacerlo con algunos libros de "aprender a codificar para Android" que compré.
Esto es muy parecido a usar la clase de Aplicación.
¿Qué pasa con la pérdida de memoria? ¿cómo compartes datos? – Nico
Después de leer el documento acerca de SharedPreferences y el debate casi a la guerra de llama sobre Singleton vs Application in android.
Mi conclusión: Por favor desmentir ninguna conclusión
- SharedPreferences: Bueno si va a mantener sólo primitivas, y fácil de mantener diferentes parcelas.
- parcelable: Una solución de bajo nivel, con una gran cantidad de código repetitivo, se puede utilizar en Extras
- Serializable: Si no quiere preocuparse por parcelable. Ver this
Singleton: Mi elección. Simple, rápido y sin repetición. Mi contribución es usar un Mapa dentro para flexibilidad.
public class Config { private static Config instance; private HashMap<String, Object> map; /*Keep doc about keys and its purpose if needed*/ public static final String TOKEN = "token"; public static final String SESSION = "sessionId"; /** A bean with A LOT of useful user info */ public static final String USER_BEAN = "userBean"; private Config() { map = new HashMap<String, Object>(); } public static final Config getInstance() { if (instance == null) { instance = new Config(); } return instance; } public void setKey(String key, Object value) { map.put(key, value); } public Object getKey(String key) { return map.get(key); } }
Aplicación: Casi lo mismo que Singleton, pero por alguna razón ocultar-a-mí, facilitar la prueba y forma estandarizada más androide de hacer las cosas.
Puede almacenarlo en SharedPreferences o en clase Singleton. donde sugeriría usar la clase singleton.
- SharedPreferences:
valor de escritura
SharedPreferences mPref= this.getSharedPreferences("session", MODE_WORLD_READABLE);
mPref.edit().putString("session_id", your_session_value).commit();
leer el valor
SharedPreferences mPref= getSharedPreferences("session", MODE_WORLD_READABLE);
String sSession_id= mPref.getString("session_id", null);
Singleton clase
public class Session { private static Session session = null; private String mSessionId; private Session() { } public static Session getInstance() { if (session == null) { session = new Session(); } return session; } public String getSessionId() { return mSessionId; } public void setSessionId(String pSessionId) { this.mSessionId = pSessionId; } }
Escribir al Singleton
Session mSession = Session.getInstance();
mSession.setSessionId("your_session_id");
Leer de Singleton
Session mSession = Session.getInstance();
String mSessionId = mSession.getSessionId();
- 1. Compartir bases de datos sqlite entre múltiples actividades de Android
- 2. Compartir un objeto entre actividades
- 3. Compartir datos entre actividades y servicios
- 4. Android: compartir actividades/código entre diferentes aplicaciones
- 5. Compartir datos entre AppDomains
- 6. Arquitectura - Múltiples aplicaciones web que funcionan en los mismos datos
- 7. Múltiples espejos Maven para los mismos repositorios
- 8. Compartir datos entre páginas html
- 9. Javascript: compartir datos entre pestañas
- 10. Pasar datos entre actividades en Android
- 11. Compartir datos entre procesos en Python
- 12. ¿Se pueden compartir los mismos datos DLL con 2 procesos diferentes?
- 13. Cómo compartir el conjunto de conexiones entre múltiples aplicaciones Java
- 14. Android: inicie actividades múltiples
- 15. Admob en actividades múltiples?
- 16. Compartir datos entre controles de usuario
- 17. Compartir datos de iCloud entre dos aplicaciones
- 18. compartir datos entre dos aplicaciones de iphone
- 19. ¿Cómo intercambiar datos (objetos) entre diferentes actividades de Android?
- 20. Compartir datos entre aplicaciones en un iDevice
- 21. ¿Cómo puedo compartir un servicio entre actividades sin que se reinicie?
- 22. Android PagerView entre actividades
- 23. ¿Se puede compartir con seguridad una identificación de Android View en múltiples actividades?
- 24. cómo compartir una transacción entre varios hilos
- 25. C++, cómo compartir datos entre procesos o subprocesos
- 26. ¿Buenas alternativas para compartir un árbol complejo de objetos entre actividades en Android?
- 27. Cómo compartir datos entre diferentes hilos En C# usando AOP?
- 28. CodeIgniter: Aplicaciones múltiples, ¿cómo compartir recursos?
- 29. ¿Cómo compartir datos entre la actividad y el widget?
- 30. Cómo compartir datos entre las peticiones de Tornado Web
lo que desea pasar exactamente? Y publique su código aquí –
Puede compartir datos a través de un intento o puede hacer 1 clase global y acceder a los datos a través de ese ... enviar datos a través de la intención es muy simple ... simplemente debe poner sus datos en intent.putExtra (tipo de datos adecuado)) método y compartirlo en múltiples actividades ... – android
Tengo Iniciar sesión en mi aplicación en la que obtendré sessionid Necesito usarla en todas las actividades que se produzcan después de iniciar sesión. También necesito pasar otros datos a las próximas actividades. (incluido el sessionid). Ahora estoy intentando con intención, pero a veces se desvía a otras actividades. – Harish