2011-06-26 14 views
1

私はPreferencesScreenを持っています。これにはいくつかのPreferencesとサブ画面があります。AndroidのPreferenceScreensの切り替え

<PreferenceScreen android:key="root"> 

    <Preference android:key="first" /> 

    <PreferenceScreen android:key="subScreen" /> 
     <Preference android:key="second" /> 
     <Preference android:key="third" /> 
    </PreferenceScreen> 

</PreferenceScreen> 

ユーザーが従属画面をクリックすると、従属画面に移動します。ここで、「2番目」または「3番目」をクリックすると、ユーザーを「ルート」設定画面にリダイレクトします。従属画面を閉じるか、前の画面にフォーカスするための適切なAPIが見つからないようです。アイデア?

答えて

3

お好みのサブ画面がダイアログとして表示されます。あなたのケースでは、適切なPreferenceScreenを表すダイアログを閉じるだけで十分でしょう。

PreferenceScreen ps = (PreferenceScreen)PrefsActivity.this.getPreferenceScreen() 
    .findPreference("subScreen"); 
ps.getDialog().dismiss(); 

PrefsActivityは、アプリケーションで使用されているPreferenceActivityの親インスタンスです:あなたは、おそらく「第二」及び「第3」環境設定]ダイアログを閉じために設定OnPreferenceClickListeneronPreferenceClick()メソッドに以下のコードを挿入します。

+0

ありがとう、getDialog.dismissはトリックをしました。 –

1

最初にPreference要素が裸である理由はわかりません。私の頭の上から離れて、私はあなたが望んでいる行動に出会うだろう設定のどこにも考えることができないので、あなたがしようとしていることは予想外である可能性が高いです。また、入れ子にされたPreferenceScreenの要素から、新しい方向がHoneycomb以降のPreferenceFragmentsであるため、移動を開始することをお勧めします。

と言われていますが、それはあなたが必要とするものが得られるかどうかを確認するためににsetPreferenceScreen()を入れてみてください。

+0

簡潔にするために、上記のスニペットをクリーンアップしました。全体のソースには、私の質問に無関係な詳細が含まれていました。 –

関連する問題