2015-10-21 127 views
0

我已经设置了我的设置活动,当运行我的模拟时,我可以编辑我的设置..关闭应用程序并重新启动它,并保持不变。 现在,当我想从一个活动textview引用这个时,我得到了我第一次写入到strings.xml中的密钥,它是unitnumkey,但设置活动存储它很好..Android设置和首选项

我在这里错过了什么?

这里是pref_general.xml

android:key="@string/pref_file_key_unit_number" 
     android:title="@string/pref_title_unit_number" 
     android:defaultValue="@string/pref_default_unit_number" 
     android:selectAllOnFocus="true" 
     android:inputType="phone" 
     android:singleLine="true" 
     android:maxLines="1" /> 

的strings.xml

<string name="pref_header_general">General</string> 
<string name="pref_title_unit_number">Unit SMS Number</string> 
<string name="pref_default_unit_number">0756745745</string> 
<string name="pref_file_key_unit_number">unitnumKey</string> 

的TextView活动

String phoneNum = getString(R.string.pref_file_key_unit_number); 

       final TextView mTextView = (TextView) findViewById(R.id.textView); 
       mTextView.setText(phoneNum); 

settingsactivity

public static class GeneralPreferenceFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.pref_general); 
     setHasOptionsMenu(true); 



     bindPreferenceSummaryToValue(findPreference("unitnumKey")); 
    } 


private static void bindPreferenceSummaryToValue(Preference preference) { 
     // Set the listener to watch for value changes. 
     preference.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener); 

     // Trigger the listener immediately with the preference's 
     // current value. 
     sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, 
       PreferenceManager 
         .getDefaultSharedPreferences(preference.getContext()) 
         .getString(preference.getKey(), "")); 
    } 
+0

什么是bindPreferenceSummaryToValue?它看起来像你必须使用不同的库,而不是Android的PreferenceFragment库,这种类型的信息总是有帮助 –

+0

我正在使用一个settingsactivity模板...我添加了一些关于bindpref的代码 –

+0

对不起,请参阅我的更新2那里我在setText中使用'myValue' –

回答

0

您根本不打开首选项,只是将字符串值读出。

你需要做的: 更新2

String phoneNum = getString(R.string.pref_file_key_unit_number); 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    String myValue = preferences.getString(phoneNum, null); 

    final TextView mTextView = (TextView) findViewById(R.id.textView); 
    mTextView.setText(myValue); 
+0

仍然一样,只是显示unitnumkey,但谢谢。 –

+0

@JayBoy请参阅update,在获取默认共享首选项时尝试传递'getApplicationContext()'而不是'this',还请提供代码存储首选项的代码 –