2010-11-09 5 views
0

Dans mon application Android, j'ai deux classes de vue personnalisées - PortraitClass et LandscapeClass. Ils font tous deux la même chose. Lors de l'exécution de l'application, la classe d'affichage récupère quelques images d'une carte SD, puis manipule (skew etc) et les affiche. La seule différence entre les deux classes est que la disposition des images est légèrement différente sur l'écran.Android: transmettre des données entre les vues

J'ai deux fichiers display.xml (un sous le dossier de mise en page et l'autre sous layout-land). Celui sous le dossier de mise en page ajoute Portrait et l'autre ajoute la classe Paysage. En cas de changement d'orientation, je voudrais envoyer des informations (numéros d'image et peu de bitmaps) d'une classe à l'autre afin que je n'aie plus à récupérer toutes les images et à afficher celles qui étaient affichées . Je trouve que la chose parcelable est un peu déroutante. J'ai essayé de suivre this_example, mais j'ai remarqué que dans OnRestoreInstance, le Parcelable a la valeur null pour "mSuperState" et j'obtiens une classe classCastException @ "SavedState ss = (SavedState) state". L'entier (numéro d'image) que j'essaie de transmettre est là. Je ne suis pas sûr de ce que je fais mal.

Répondre

1

Vous pouvez utiliser un singleton global dans la classe d'application. Par exemple, un « AssetManager » est disponible ici:

public class YourApplication extends Application { 

    public AssetManager assetManager = new AssetManager(); 

    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
    } 
} 

Vous pouvez alors l'appeler d'une autre activité:

YourApplication application = ((YourApplication) this.getApplication()); 
application.assetManager.someFunction(); 
+0

Merci, ça a marché comme un charme !! – Manny

0

Vous ne savez pas si c'est ce que vous recherchez, mais mon travail fonctionne toujours en changement d'orientation avec onCreate (Bundle savedInstanceState). Le mien est tout le texte dans les zones de texte d'édition si bien que je ne suis pas sûr de savoir comment cela fonctionnerait pour vous.

Vérifiez également ceci à mi-chemin vers le bas sous la rubrique « État Persisting information Lors d'un changement de configuration » http://www.devx.com/wireless/Article/40792/1954

+0

Merci, je suis en train de faire la même chose, mais par une classe de vue plutôt que de l'activité. Je pense que mon problème est que super.onSaveInstanceState renvoie null, je ne sais pas pourquoi. – Manny

Questions connexes