2011-11-21 4 views

Répondre

0

Vous n'implémentez pas les constructeurs dans les activités dans Android. Veuillez effectuer ce type d'initialisation en onCreate(), après avoir appelé super.onCreate().

(mes excuses pour la syntaxe Java - je ne parle pas C#)

2

Pouvez-vous fournir un constructeur Activity qui prend des paramètres? Oui. Serait-ce utile? Non, car les activités sont démarrées via Context.StartActivity(), ce qui ne permet pas d'invoquer un constructeur autre que celui par défaut. La "façon Android" de transférer des données entre les activités consiste à utiliser le mécanisme "extras" d'intention, par ex. Intent.PutExtra(string,string) et Intent.GetStringExtra(string), qui introduit son propre ensemble de problèmes:

  1. Intentions sont également un mécanisme IPC (comme une activité peut résider effectivement dans un autre processus - c'est par la conception), de sorte que vous êtes limité à des types qui peut être marshalé à travers les limites du processus.
  2. String s, int s, et d'autres types intégrés sont pris en charge, mais ne sont pas exactement des objets de «haut niveau».
  3. Les objets de "niveau supérieur" sont pris en charge par l'interface android.os.Parcelable, mais (a) a une sémantique "marshal par valeur", donc n'est pas utile pour partager des données en lecture et écriture entre activités, et (b) Mono for Android doesn't currently support implementing this interface.

Alors, comment partagez-vous des données entre les activités? En bottant.

  • Placer les données dans une sous-classe Application. Cela sera accessible via la propriété Context.ApplicationContext et peut stocker l'état global du processus.
  • Utilisez un autre champ public static dans votre processus pour contenir les informations partagées.
  • Fournit une implémentation ContentProvider qui stocke et fournit les données souhaitées lorsque vous y êtes invité.
  • Sqlite?
  • etc.
+0

Merci - c'est utile. Existe-t-il des exemples de code disponibles pour ces méthodes. J'ai pensé rendre la classe que je passe comme étant Serializable et passant cela bien que l'appel PutExtra mais il ne semble pas y avoir une surcharge sérialisable .... – Nodoid

Questions connexes