Question

J'ai une activité de préférences où je peux changer la langue et le thème de ma demande. De là, je reviens à l'activité précédente via la touche Retour, et je veux recréer l'activité.

J'ai réussi à le faire en réinitialisant la mise en page onResume et appelant également onRestoreInstanceState à partir de là. Toutes les vues sont restaurés correctement, avec des cases à cocher vérifier le cas échéant, edittexts remplis de textes que je laissés là-dessus.

Mais j'ai aussi un bouton qui est initialement désactivé et devient activé que lorsqu'un bouton radio est cochée. Le problème avec c'est la suivante: je vérifie le bouton radio, le bouton est activé. Ensuite, je vais aux paramètres, changer le thème là, et le retour à la première activité. Quand je suis arrivé, le bouton radio est restauré comme vérifié, mais le bouton est désactivé.

Il semble donc que le permis / l'état désactivé n'est pas enregistré dans le faisceau, ce qui semble contraire à l'intuition. Et je ne l'ai pas trouvé de code dans la source Android qui fait cela aussi. Am quelque chose que je manque, ou dois-je écrire mon propre code pour cela?

EDIT: BTW, l'état est enregistré uniquement pour les vues qui ont ids. Et ce bouton n'avoir un, je vous garantis que:)

Était-ce utile?

La solution

Ils clé ici est de voir ce qui permet à fait le bouton et assurez-vous compatible sur tous les accès à l'application.

A partir de votre déclaration:

  

Mais j'ai également un bouton qui est initialement désactivé et devient activé que lorsqu'un bouton radio est cochée.

il semble que vous avez un auditeur sur le bouton radio qui permet le bouton. De là, je crois que le bouton est initialement désactivé, ce qui signifie que vous devrez changer que chaque fois que vous exécutez l'activité.

Vos options sont comme suit:

  • Avez-RadioButton établi une sorte de préférence globale qui est vérifiée dans onResume, ce qui permet le bouton si nécessaire
  • Lorsque le bouton radio est cochée, modifiez les paramètres globaux (ou peut-être les paramètres de l'interface graphique) à celui dans lequel le bouton est activé. Cela peut rester pour toujours jusqu'à ce que le nouveau est RadioButton sans contrôle.
  • Enregistrement du enabledness en onSaveInstanceState que vous mentionnez

Il est difficile de dire qui est le plus approprié parce que vous ne l'avez pas mentionné le contexte du cas d'utilisation, mais j'éviterait l'envoyer par dans le paquet à moins qu'il est une activité très rarement utilisée. Il fait beaucoup de sens pour garder une trace du paramètre radiobutton soit par stockage ou changer la vue jusqu'à nouvel ordre.

Autres conseils

Le plus simple est de permettre à votre bouton onResume si le bouton radio est cochée.

Modifier : PreferenceGroup peut gérer les dépendances entre les vues, mais il a besoin de l'activité à une sous-classe de PreferenceActivity .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top