Ho un ID di sessione di accesso che è necessario utilizzare più attività. Come condivido questi dati comuni tra più attività? Attualmente sto passando i dati nell'intento ma non funziona correttamente. Per alcune attività, trasmetto altri dati e i dati comuni vengono persi.Come condividere gli stessi dati tra più attività
risposta
- Utilizzare lo Application class per condividere dati comuni.
- Use Shared Prefrences or databases or some sort of persistant storage.
Si dovrebbe usare sharedpreferences come da sotto i particolari, http://developer.android.com/guide/topics/data/data-storage.html#pref
uso comune preferenze come questo:
SharedPreferences myprefs= this.getSharedPreferences("user", MODE_WORLD_READABLE);
myprefs.edit().putString("session_id", value).commit();
È possibile recuperare queste informazioni in tutta l'applicazione in questo modo:
SharedPreferences myprefs= getSharedPreferences("user", MODE_WORLD_READABLE);
String session_id= myprefs.getString("session_id", null);
Dovresti usare intents quando vuoi iniziare un'altra attività dalla tua attività corrente ... anche se l'attività del bambino è totall y dipende da dati provenienti da attività di genitore ... uso intenti
Non so che cosa esattamente il codice è si sta trattando, ma hai provato come questo
nella vostra attività in corso, creare un intento
Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra(key, value);
startActivity(i);
quindi nell'altra attività, recuperare quei valori.
Bundle extras = getIntent().getExtras();
if(extras !=null) {
String value = extras.getString(key);
}
classe Singleton Usa per la condivisione.
codice di esempio
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;
}
}
in altre attività/Class per impostare il valore come:
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;
Il modo in cui lo faccio è che estendo una classe mondiale da attività, e quindi estendere tutto attività reali con le quali l'utente interagirà. È così che ho imparato a farlo con alcuni libri "learn to code for android" che ho comprato.
Questo è praticamente come utilizzare la classe Application.
Che dire della perdita di memoria? come condividi i dati? – Nico
Dopo aver letto il documento su SharedPreferences e la discussione quasi su flamewar su Singleton vs Application in android.
concludo: Si prega di smentire alcuna conclusione
- SharedPreferences: Buono se si prevede di mantenere solo i primitivi, e facile da diverse partite.
- Parcelable: una soluzione di basso livello, con molto codice boilerplate, è possibile utilizzare in Extras
- Serializable: se non si desidera disturbare con Parcelable. Vedi this
Singleton: La mia scelta. Semplice, veloce e senza caldaia. Il mio contributo è usare una mappa all'interno per flessibilità.
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); } }
Applicazione: Quasi la stessa di Singleton, ma per qualche ragione nascondere-a-me, facilitare il testing e il modo normalizzata più androide di fare le cose.
È possibile memorizzarlo in SharedPreferences o nella classe Singleton. dove suggerirei di usare la classe singleton.
- SharedPreferences:
scrivere il valore
SharedPreferences mPref= this.getSharedPreferences("session", MODE_WORLD_READABLE);
mPref.edit().putString("session_id", your_session_value).commit();
Leggi Valore
SharedPreferences mPref= getSharedPreferences("session", MODE_WORLD_READABLE);
String sSession_id= mPref.getString("session_id", null);
Singleton classe
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; } }
Scrivi Singleton
Session mSession = Session.getInstance();
mSession.setSessionId("your_session_id");
Leggi dal Singleton
Session mSession = Session.getInstance();
String mSessionId = mSession.getSessionId();
- 1. Come posso condividere i dati tra attività Ant personalizzate?
- 2. Stessi dati in più viste usando AngularJS
- 3. Puoi condividere i dati su più modelli?
- 4. Come condividere i dati tra file javascript?
- 5. Puoi condividere dati su CloudKit tra diverse app
- 6. Come condividere il layout comune tra le attività senza frammento
- 7. Come posso condividere un servizio tra le attività senza riavviarlo?
- 8. Tanti modi per formattare gli stessi dati
- 9. Condividere i dati tra i taccuini IPython
- 10. più numeri casuali sono gli stessi
- 11. sprintf utilizzando gli stessi valori più volte
- 12. Sedano: limite di velocità sulle attività con gli stessi parametri
- 13. più istanze stessi dati URL dell'immagine
- 14. std :: thread C++. Più discussioni stessi dati
- 15. Come condividere le preferenze del progetto Eclipse tra gli utenti?
- 16. Come posso unire sottoserie consecutive che contengono gli stessi dati?
- 17. Qual è il modo corretto di condividere i dati tra diverse attività o frammenti?
- 18. Come condividere i dati tra le richieste in Tornado Web
- 19. Come condividere le regole FxCop tra tutti gli sviluppatori?
- 20. Come mantenere sincronizzati i client Web con stato, quando più client guardano gli stessi dati?
- 21. In SpecFlow, come posso condividere i dati tra passaggi/funzionalità?
- 22. Come condividere i dati tra classi separate in Java
- 23. Come condividere i dati del portachiavi tra le applicazioni iOS
- 24. Come condividere i dati tra due moduli in AngularJS?
- 25. C++, come condividere i dati tra processi o thread
- 26. Condividere un oggetto tra file QML
- 27. Come posso condividere la memoria tra i processi in MATLAB?
- 28. dplyr summarise_each() che utilizza più funzioni per diversi sottoinsiemi di colonne tra gli stessi gruppi
- 29. Come condividere le immagini tra più host di docker?
- 30. Julia: passaggio di dati tra coroutine (attività)
ciò che si desidera passare esattamente? E inserisci qui il tuo codice –
Puoi condividere i dati tramite intent o puoi fare 1 classe globale e accedere ai dati attraverso questo..inviare i dati via intent è molto semplice .. devi solo mettere i tuoi dati in intent.putExtra (tipo di dati adatto) metodo e condividerlo su più attività ... – android
Ho accesso nella mia applicazione in che otterrò sessionid ho bisogno di usarlo in tutte le attività che mai dopo l'accesso anche io ho bisogno di passare alcuni altri dati alle attività successive (incluso sessionid). Ora sto provando con intento ma a volte devia verso altre attività. – Harish