2

値はSharedPreferenceに保存されていますが、PreferenceActivityを開いたときに表示されません。 私はandroid:entryValuesを入れないと実行されますが、それは何か別の言語を使用していくつかの違いがあるので、私はそれを使用することはできませんprefferenceの値は何ですか。PreferenceActivityエラー:終了後に選択したオプションが表示されません。アクティビティ

¿私は何をすることができますか?

読んでいただきありがとうございます。

コード:

PreferencesMenu 活性

public class PreferencesMenu extends PreferenceActivity 
{ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setDefaultKeyMode(MODE_PRIVATE); 

    addPreferencesFromResource(R.layout.preferences); 
    getPreferenceManager().setSharedPreferencesName("Gat_Preferences"); 

} 
} 

のstrings.xmlの一部:

<string-array name="menu_preference_general_order_array"> 
     <item>Default</item> 
     <item>Alphabetical</item> 
    </string-array>  
    <string-array name="menu_preference_general_order_values"> 
     <item>default</item> 
     <item>alphabetical</item> 
    </string-array> 

あるpreferences.xml レイアウト

<?xml version="1.0" encoding="utf-8"?> 
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    ... 
<PreferenceCategory android:title="@string/menu_preference_general"> 
    <ListPreference 
     android:key="list_order" 
     android:persistent="true" 
     android:title="@string/menu_preference_general_order_title" 
     android:summary="@string/menu_preference_general_order_description" 
     android:entries="@array/menu_preference_general_order_array" 
     android:entryValues="@array/menu_preference_general_order_values"/> 
    </PreferenceCategory> 
</PreferenceScreen> 

MOD

は、私は、Android 2.1を使用し、私は新しいフラグメント・プリファレンスを使用することはできません。

答えて

0

を使用するファイル名を優先度APIに伝えてから、すべてを読み込む必要があります。

の代わりにこの:追記オン

getPreferenceManager().setSharedPreferencesName("Gat_Preferences"); 
addPreferencesFromResource(R.layout.preferences); 

R.layout.preferencesを使用しないでください:

addPreferencesFromResource(R.layout.preferences); 
getPreferenceManager().setSharedPreferencesName("Gat_Preferences"); 

はこれを行います。 R.xml.preferencesを使用し、/res/xmlの下にファイルを置き、/res/layoutの下には置かないでください。それはあなたのやり方ですが、すべてのAPIバージョンで動作することは保証されていません。これは、設定XMLファイルを使用するデフォルトの方法ではないためです。

+0

サイドノートでは、ファイル名がわかりません。理由がある場合を除いて、私が今までに持っていなかったことを教えていますが、PreferenceManagerを呼び出してdefaultSharedPreferencesを取得し、APIでそれを動作させる方が良いでしょう。異なるクラス間でファイル名を抽象化することで、バグ(スペルミスなど)が発生する可能性を避けることができます。そしてあなたのレイアウト対XMLの問題については、私はここで1.5でテストしています。しかし、私はまだ正しい場所に置くことをお勧めします。 – davidcesarino

+0

あなたの素晴らしい答えをありがとう(完璧に走る)。私はあなたの好みについてラベルを使わないことを試してみるでしょう、そして、私はR.xml.preferencesについて知りませんでしたが、とにかく感謝します。あなたはそれをどこで見たことがありますか? APIはおそらく?一冊の本? –

+0

体験:-)とAPI。 – davidcesarino

0

preferences.xmlres/xmlである必要があります。 また、デフォルト値を割り当てる必要があります。

<ListPreference 
    android:key="list_order" 
    android:persistent="true" 
    android:title="@string/menu_preference_general_order_title" 
    android:summary="@string/menu_preference_general_order_description" 
    android:entries="@array/menu_preference_general_order_array" 
    android:entryValues="@array/menu_preference_general_order_values" 
    android:defaultValue="default" 
    /> 
+0

もう一度、私が前に言ったように、どちらも問題ではありません。まず、prefs XMLファイルを/ res/xmlの下に置く必要はありません。それは/ res/layoutからちょうど良いものをロードします。もちろん、それは良い習慣ではありません。いつかどこかで壊れる可能性があります。しかし、限られた例と問題では、addコマンドはXML自体をロードし、正しいパス(R.layout)を提供する限り、有効なXMLファイルが必要であるため、レイアウトでうまく動作します。適切な場所に置くことは、彼の*解決策ではなく、*良い練習です*。 – davidcesarino

+0

デフォルト値については、まだ問題は解決していません。デフォルト値を指定するだけで、元の問題---空のセレクタをアプリを再起動するたびに置き換えます---別の問題があります。常にアプリを再起動するたびにデフォルト値が提供されます。どのように失敗するかを確認するには、ソリューションを使用して「アルファベット順」オプションを選択します。次回は、「デフォルト」と表示されます。あなたがこのデフォルト値を指定すると、そのデフォルト値がデフォルトのprefsファイル(/ data/data/packagenameの下のpackagename_preferences.xml)に書き込まれます。 – davidcesarino

+0

カスタムプリフファイル名を設定する前にプリファレンスを追加すると、プリファレンスはデフォルトからロードされます。ただし、ユーザーがprefファイルをそのカスタムに設定すると、すべてのユーザーの変更がそのカスタムprefsファイルに書き込まれるため、ユーザーは常にデフォルトのprefsファイルのデフォルト値を参照しますが、値は常にカスタムprefsファイルに設定されます。私が言ったように、ソリューションはカスタムのprefsファイルへの呼び出しを反転し、リソースから環境設定を追加します。 – davidcesarino

関連する問題