Actuellement je travaille sur une application Android qui crée dynamiquement des contrôles. Chaque fois qu'un utilisateur clique sur un bouton, un nouvel EditText apparaît sous le bouton et l'utilisateur peut interagir avec EditText. Toutefois, si l'orientation de l'écran change, les EditText créés par l'utilisateur disparaissent également.Android: création dynamique de contrôles et changement d'orientation
Exemple de code d'utilisateur qui crée un EditText: (situé dans un onClick(), p est layoutParamas de base, et la mise en page est un LinearLayout situé undearneath le bouton)
EditText editText = new EditText(this);
layout.addView(buttonView, p);
Vous vous demandez ce serait la meilleure façon de enregistrer la mise en page lorsque l'orientation de l'écran change, donc je ne perds aucun des contrôles, ou est-ce que je crée dyanmically les contrôles mal.
Merci. Mise à jour: En écrasant onSaveInstanceState(), j'ai pu enregistrer un objet qui contenait une liste de tous les contrôles que l'utilisateur avait ajoutés. En utilisant cette liste, j'ai été capable de créer les contrôles dans onCreate().
Encore curieux s'il y a un moyen plus facile d'accomplir cette tâche, car je devrais refactoriser beaucoup de code pour implémenter complètement cette méthode.
Vous avez donc pu enregistrer un objet réel? Mon activité permet à l'utilisateur d'afficher des vues de widget, très similaire à ce que vous faites pour ajouter une vue en fonction de ce qu'elles font. Et je veux enregistrer des widgets [] dans le paquet, mais je ne suis pas sûr de savoir comment. – mylock
Il y a quelques guides qui peuvent être trouvés en ligne. Par exemple: http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html Fondamentalement, vous devez avoir l'objet implémentable Serializable ou Parcelable. Puis, en utilisant bundle.putSerializable ou bundle.putParcelable, vous pouvez passer l'objet. Désolé pour le retard de réponse – BigAlHt