4

アプリケーションの言語とテーマを変更できる環境設定アクティビティがあります。そこから、戻るキーを使用して前のアクティビティに戻り、アクティビティを再作成したいと考えています。

onResumeレイアウトを再初期化し、そこから呼び出すことで、なんとかそれを行うことができましたonRestoreInstanceState。すべてのビューが適切に復元され、必要に応じてチェックボックスがオンになり、以前に残したテキストで満たされた編集テキストが表示されます。

しかし、最初は無効になっていて、ラジオボタンがチェックされている場合にのみ有効になるボタンもあります。問題は次のとおりです。ラジオボタンをチェックすると、ボタンが有効になります。次に、設定に移動し、そこでテーマを変更して、最初のアクティビティに戻ります。そこに着くと、ラジオボタンはチェックされた状態に戻りますが、ボタンは無効になっています。

そのため、有効/無効の状態がバンドルに保存されていないようです。これは直感に反するようです。また、これを行う Android ソースのコードも見つかりませんでした。何か不足していますか、それとも独自のコードを作成する必要がありますか?

編集:ところで、状態はIDを持つビューに対してのみ保存されます。そして、そのボタンには1つあります。私はそれを保証します:)

4

2 に答える 2

0

最も簡単な方法は、ラジオボタンがオンになっている場合に onResume でボタンを有効にすることです。

編集: PreferenceGroupはビュー間の依存関係を処理できますが、Activity をPreferenceActivityのサブクラスにする必要があります。

于 2010-05-18T08:06:17.463 に答える
0

ここで重要なのは、実際に何がボタンを有効にしているかを確認し、それがアプリケーションへのすべてのアクセスで一貫していることを確認することです。

あなたの声明から:

しかし、最初は無効になっていて、ラジオボタンがチェックされている場合にのみ有効になるボタンもあります。

ボタンを有効にするラジオボタンにリスナーがあるようです。このことから、ボタンは最初は無効になっていることがわかります。つまり、アクティビティを実行するたびに変更する必要があります。

オプションは次のとおりです。

  • ラジオボタンに、onResume でチェックされるある種のグローバル設定を設定し、必要に応じてボタンを有効にします。
  • ラジオボタンがチェックされている場合、グローバル設定 (またはおそらく GUI 設定) をボタンが有効になっているものに変更します。ラジオボタンが再びオフになるまで、それは永久に残る可能性があります。
  • あなたが言及したように onSaveInstanceState に有効性を保存する

ユースケースのコンテキストに言及していないため、どちらが最も適切かを判断するのは困難ですが、非常にまれに使用されるアクティビティでない限り、バンドルで送信することは避けます. ラジオボタンの設定を保存するか、追って通知があるまでビューを変更して追跡することは非常に理にかなっています。

于 2010-05-20T16:10:34.143 に答える