2011-12-23 4 views
0

Je voudrais créer des instances de toutes mes vues dans l'application une fois et pendant l'exécution passez l'affichage correct à Activity.setContentView() - par référence et non par id. Alors - comment créer correctement la vue en connaissant son identifiant?comment créer une instance de vue connaissant son identifiant?

Question supplémentaire: Comment l'instance de vue est-elle créée lorsque je passe l'ID dans Activity.setContentView? Chaque fois que j'appelle la nouvelle instance de setContentView est créée? Salutations pour tous

+0

Pourquoi voulez-vous faire cela? – Yury

Répondre

0

Pourquoi voulez-vous faire cela? Mon avertissement est que tenir des instances pour TOUS vos points de vue dans une activité est excessive et inutile. Vous devriez probablement diviser la fonctionnalité de votre code en plusieurs activités et avoir une mise en page associée à chacune. Si vous devez utiliser utiliser plusieurs vues dans la même activité, ce type de comportement est probablement mieux fait dans votre fichier de disposition (mettre plusieurs vues dans votre disposition, puis les afficher/masquer dans votre code).

Cela étant dit, vous aurez besoin de la classe LayoutInflater. Gonflez la mise en page et faites ce que vous voulez avec. Si vous recherchez une vue spécifique dans cette mise en page, utilisez la méthode findViewByID() sur cette mise en page agrandie.

LayoutInflater inflater = (LayoutInflater)context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); 
LinearLayout ll = inflater.inflate(R.layout.your_layout, null); 
View v = ll.findViewByID(R.id.view_name); 
//Do stuff with view or layout 
+0

Est-ce que vous suggérez que dans une situation où l'application (disons: jeu) a plusieurs écrans (menu principal, jeu, options/temple de la renommée), ils devraient tous être mis en vue unique? Comment concevoir cette mise en page correctement dans le concepteur sachant que finalement chaque enfant de niveau 1 va se propager à l'écran entier? – ardabro

+0

Je ne vous suggère pas de conserver plusieurs vues dans une seule mise en page. Je suggère de les garder en tant que mises en page distinctes (différents fichiers XML) et les utiliser avec leurs propres activités indépendantes. c'est-à-dire que vous auriez une activité pour le menu principal, une activité différente pour les options, une activité différente pour le hall de la renommée, etc. Cela réduirait la quantité de mémoire que chaque activité prendra, ce qui faciliterait le système Android gérer correctement. – pav

Questions connexes