2016-06-20 2 views
0

я проблема, это мой первый раз, используя PreferenceFragment, когда я получаю данные он пуст, я не знаю, где проблема вот мой PreferenceFragment и strings.xml и настройки .xml файл , пожалуйста, помогите!получение данных из getDefaultSharedPreferences всегда возвращают пустые значения

PreferenceFragment

public class SettingsFragment extends PreferenceFragment { 
    private EditTextPreference mEditDomainPrefernce; 
    private EditTextPreference mEitDomainPrefernce2; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.settings); 
     mEditDomainPrefernce = (EditTextPreference) getPreferenceManager().findPreference("ArabicDomain"); 


     mEitDomainPrefernce2 = (EditTextPreference) getPreferenceManager().findPreference("KoreanDomain"); 

     mEitDomainPrefernce2.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       mEitDomainPrefernce2.setSummary(newValue.toString()); 
       return true; 
      } 
     }); 

     mEditDomainPrefernce.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       mEditDomainPrefernce.setSummary(newValue.toString()); 
       return true; 
      } 
     }); 

    } 


} 

strings.xml

<resources> 
    <string name="app_name">My Application</string> 
    <string-array name="input"> 
     <item>English</item> 

    </string-array> 
    <string-array name="out"> 
     <item>Arabic</item> 
     <item>Korean</item> 

    </string-array> 
    <string name="default_arabic">http://somelink</string> 
    <string name="default_Korean">http://somelink</string> 

</resources> 

settings.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 

    <PreferenceCategory 
     android:title="domain setting"> 


     <EditTextPreference 
      android:key="ArabicDomain" 
      android:title="Arabic Domain" 
      android:summary="@string/default_arabic" 
      android:dialogTitle="change the domain" 
      android:defaultValue="@string/default_arabic" 
      /> 

     <EditTextPreference 
      android:key="KoreanDomain" 
      android:title="Korean Domain" 
      android:summary="@string/default_Korean" 
      android:dialogTitle="change the domain" 
      android:defaultValue="@string/default_Korean" 
      /> 
    </PreferenceCategory> 



</PreferenceScreen> 

И, наконец, я называю getDefaultSharedPreferences в деятельности

mArabicDomain = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("ArabicDomain",""); 
     mKoreanDomain = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("KoreanDomain",""); 

и результат обе строки пусты, пожалуйста, скажите мне, что это неправильно

+0

Попробуйте использовать 'this' вместо' getApplicationContext() '. – Vucko

+0

@Vucko же результат –

+0

Попробуйте использовать 'findPreference (" ArabicDomain ");' без 'getPreferenceManager()' – Vucko

ответ

1

Второй аргумент, передаваемый getDefaultSharedPreferences соответствует значению defalut.

Вместо "" попробуйте "некоторую строку".

Edit:

Попробуйте это:

sharedPref = PreferenceManager.getDefaultSharedPreferences(this);

EditTextPreference edp = (EditTextPreference)findPreference("KoreanDomain");

sharedPref.getString("KoreanDomain","defValue");

+0

Как это поможет? Он просто укажет значение по умолчанию, проблема все равно будет связана с тем, что он не записывает новое значение. – Vucko

Смежные вопросы