2017-05-11 15 views
1

編集:実際には私のListPreferenceのデフォルトは設定されていません。ListPreference環境設定でデフォルトが設定されていません

私のアプリケーションが起動すると、setDefaultValuesを呼び出してもListPreferenceのデフォルト値は設定されません。それは間違ったコンテキストでデフォルトを設定しているからですか?

私の環境設定にはすべてキーとデフォルト値があるので、何が間違っているのか分かりません。

マイMainActivity.java

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 
    updateButtons(); 
    } 

    /* 
    Function to open the preferences screen. 
    */ 
    public void openSettings(View view) { 
    Intent i = new Intent(this, PreferencesActivity.class); 
    startActivity(i); 
    } 


} 

マイPreferencesActivity.java

public class PreferencesActivity extends PreferenceActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); 
    } 

    public static class MyPreferenceFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
    } 
} 

マイあるpreferences.xml

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceScreen 
    android:title="@string/btn_pref1" 
    android:persistent="false"> 
    <EditTextPreference 
     android:key="btn1_name" 
     android:title="@string/btn_name" 
     android:defaultValue="@string/btn_name" /> 
    <EditTextPreference 
     android:key="btn1_cmd" 
     android:title="@string/btn_cmd_name" 
     android:defaultValue="@string/btn_default_cmd" /> 
    <ListPreference 
     android:key="btn1_color" 
     android:title="@string/btn_color" 
     android:entries="@array/colorArray" 
     android:entryValues="@array/colorValues" 
     android:defaultValue="#024c9b"/> 
</PreferenceScreen> 

<PreferenceScreen 
    android:title="@string/btn_pref2" 
    android:persistent="false"> 
    <EditTextPreference 
     android:key="btn2_name" 
     android:title="@string/btn_name" 
     android:defaultValue="@string/btn_name" /> 
    <EditTextPreference 
     android:key="btn2_cmd" 
     android:title="@string/btn_cmd_name" 
     android:defaultValue="@string/btn_default_cmd" /> 
    <ListPreference 
     android:key="btn2_color" 
     android:title="@string/btn_color" 
     android:entries="@array/colorArray" 
     android:entryValues="@array/colorValues" 
     android:defaultValue="#024c9b"/> 
</PreferenceScreen> 

<PreferenceScreen 
    android:title="@string/btn_pref3" 
    android:persistent="false"> 
    <EditTextPreference 
     android:key="btn3_name" 
     android:title="@string/btn_name" 
     android:defaultValue="@string/btn_name" /> 
    <EditTextPreference 
     android:key="btn3_cmd" 
     android:title="@string/btn_cmd_name" 
     android:defaultValue="@string/btn_default_cmd" /> 
    <ListPreference 
     android:key="btn3_color" 
     android:title="@string/btn_color" 
     android:entries="@array/colorArray" 
     android:entryValues="@array/colorValues" 
     android:defaultValue="#024c9b"/> 
</PreferenceScreen> 

<PreferenceScreen 
    android:title="@string/btn_pref4" 
    android:persistent="false"> 
    <EditTextPreference 
     android:key="btn4_name" 
     android:title="@string/btn_name" 
     android:defaultValue="@string/btn_name" /> 
    <EditTextPreference 
     android:key="btn4_cmd" 
     android:title="@string/btn_cmd_name" 
     android:defaultValue="@string/btn_default_cmd" /> 
    <ListPreference 
     android:key="btn4_color" 
     android:title="@string/btn_color" 
     android:entries="@array/colorArray" 
     android:entryValues="@array/colorValues" 
     android:defaultValue="#024c9b"/> 
</PreferenceScreen> 

<PreferenceScreen 
    android:title="@string/btn_pref5" 
    android:persistent="false"> 
    <EditTextPreference 
     android:key="btn5_name" 
     android:title="@string/btn_name" 
     android:defaultValue="@string/btn_name" /> 
    <EditTextPreference 
     android:key="btn5_cmd" 
     android:title="@string/btn_cmd_name" 
     android:defaultValue="@string/btn_default_cmd" /> 
    <ListPreference 
     android:key="btn5_color" 
     android:title="@string/btn_color" 
     android:entries="@array/colorArray" 
     android:entryValues="@array/colorValues" 
     android:defaultValue="#024c9b"/> 
</PreferenceScreen> 

<PreferenceScreen 
    android:title="@string/btn_pref6" 
    android:persistent="false"> 
    <EditTextPreference 
     android:key="btn6_name" 
     android:title="@string/btn_name" 
     android:defaultValue="@string/btn_name" /> 
    <EditTextPreference 
     android:key="btn6_cmd" 
     android:title="@string/btn_cmd_name" 
     android:defaultValue="@string/btn_default_cmd" /> 
    <ListPreference 
     android:key="btn6_color" 
     android:title="@string/btn_color" 
     android:entries="@array/colorArray" 
     android:entryValues="@array/colorValues" 
     android:defaultValue="#024c9b"/> 
</PreferenceScreen> 

</PreferenceScreen> 
+0

私は私の好みのいくつかは、すなわちのEditTextのものを保存しているが、何とかListPreferencesがされていないことがわかったものの、 – rafsanahmad007

+0

を投稿デフォルト値として設定します。私はgetStringを1つ呼び出すと ""得られます。 – Jason

答えて

1

呼び出してみてください。

PreferenceManager.setDefaultValues(getBaseContext(), R.xml.preferences, false); 
あなたの PreferencesActivityのonCreate()

コードで

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    PreferenceManager.setDefaultValues(getBaseContext(), R.xml.preferences, false); 
    getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit(); 
    } 

は、それが動作していない場合:明確なアプリケーションデータを。 Uninstallreinstallアプリ

+0

感謝を行ってrafsanahmad007 @あなたの 'R.xml.preferences'..code – Jason

+1

アプリを再インストールすると機能しました!ありがとうございました! – Jason

+0

お手伝いします.... – rafsanahmad007

関連する問題