J'ai essayé cela et cela fonctionne, mais je ne savais pas si c'était une mauvaise chose ou non, car toute l'aide sur les transferts de données entre activités semble utiliser des intentions.Puis-je mettre à jour des membres de données dans une activité d'une autre activité de l'application?
En MainActivity je:
static PilotRecord pilotRecord = new PilotRecord(); //PilotRecord just contains data item declarations
En MainActivity.onCreate:
pilotRecord.fuel = 100;
En MainActivity.onClick:
Intent intent = new Intent(this, SubActivity.class);
startActivityForResult(intent, 0);
En SubActivity.onCreate je:
MainActivity.pilotRecord.fuel = 200;
En SubActivity.onClick:
MainActivity.pilotRecord.fuel = 300;
setResult(RESULT_OK);
finish();
Quand je commence MainActivity, la valeur de carburant est 100
Si je clique dans MainActivity, sous-activité est affiché, comme prévu
Si je clique dans SubActivity, MainActivity est affiché et la valeur de carburant est maintenant 300
Si j'appuie sur le bouton Retour, MainActivity est affiché et la valeur de carburant est maintenant 200
Est-ce que quelqu'un sait de tout problème potentiel avec ce qu'il me semble plus simple à mettre en place que les intentions etc.
- Frink
Je pensais qu'il pourrait y avoir une prise que tout le monde me renvoie aux intentions. Merci pour votre explication. Vraisemblablement, je peux toujours faire référence à des constantes comme MainActivity.MAX_FUEL dans ma sous-activité car elles sont résolues au moment de la compilation? Si j'économise du carburant sur le stockage persistant onPause, ai-je besoin de le restaurer sur OnResume, ou sera-t-il déjà là? Ai-je juste besoin de le restaurer onCreate (qui ne serait exécuté que si l'activité est détruite par le système) – FrinkTheBrave
Les données utilisateur persistantes doivent être enregistrées dans onPause() et restaurées dans onResume() et onCreate(). Il vous passera un paquet, mais vous êtes responsable de remplir vos variables avec les données de l'ensemble. Les données d'état de l'application, telles que les données qu'elles saisissent dans une zone de texte, doivent être enregistrées dans onSaveInstanceState() et restaurées dans onRestoreInstanceState(). Sinon, lorsqu'ils font pivoter l'écran ou reçoivent un appel téléphonique, des données temporaires seront perdues lorsque votre application sera envoyée en arrière-plan. –