2012-12-07 23 views
7

設定画面でCheckBoxPreferenceを使用しています。 XMLは次のとおりです。Preferenceのデフォルト値をリセットする

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    <CheckBoxPreference android:key="includeAddress" 
        android:title="Include Address" 
        android:summary="" 
        android:defaultValue="true" /> 
    <CheckBoxPreference android:key="rememberName" 
        android:title="Remeber Name" 
        android:summary="" 
        android:defaultValue="false" /> 
</PreferenceScreen> 

アプリケーションで値を変更します。ユーザーがログアウトすると、xmlで定義されているデフォルト値に設定する必要があります。しかし、それは動作していないようです。彼らは私が最後に選んだ価値を保ちます。

はAndroidのドキュメントを読んでたので、私はこれが見つかりました:

PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preference_settings, true); 

をしかし、それはほとんど仕事をしていません! SharedPreferencesで他の方法で試してみました。

SharedPreferences preferences = getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.clear(); 
editor.commit(); 

いずれも機能しませんでした。

何か不足していますか?どのように私はXMLで定義されたデフォルト値にプリファレンスを設定できますか?

ありがとうございます!

答えて

6

共有設定は動作するはずですが、あなたは、ファイル名を使用して、共有設定を取得するには...

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = preferences.edit(); 
editor.clear(); 
editor.commit(); 

をデフォルトの共有設定を使用する必要があり、Androidのは、おそらくあなたのプロジェクトのパッケージ名に基づいて(この名前を作成します?)。あなたは、次のコードをSettingsActivity onCreateに入れ、preferencesNameが何であるかを見ることでそれを得ることができます。

String preferencesName = this.getPreferenceManager().getSharedPreferencesName(); 

文字列は、「com.example.projectname_preferences」のようにする必要があります。あなたのプロジェクトのどこかでハードコードを作成し、getSharedPreferences()に渡してください。

AS:

PreferenceManager.getDefaultSharedPreferences(this); 

は全体のアプリケーションパッケージのグローバルで設定ファイルへのアクセスを提供します。任意のアクティビティが環境設定にアクセスできます(内部設定、環境設定を保持するXMLファイルの名前はyour.application.package_preferences.xmlとなります)。

getParent().getSharedPreferences("preference_settings", MODE_PRIVATE); 

はcontextInstanceクラスの環境を提供します:コンテキストのクラスのインスタンスのみがこれらの設定にアクセスすることができます(内部的設定ファイルがSecondActivity.xmlで、あなたのパッケージがまだyour.application.packageであり、あなたがyour.application.package.SecondActivityにしていました)。

+0

私は別にxmlファイルをres/xmlフォルダに定義し、addPreferencesFromResource(R.xml.preference_settings)を使用して追加しました。 Prefsクラスで使用します。私はデフォルト値を設定しようとする別のクラス、ログアウトを持っています。 – Renjith

+0

更新私の答え – Nermeen

+0

あなたはそれを落とした、ブラボー!ありがとう! – Renjith

関連する問題