2015-10-21 144 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',還請提供代碼存儲首選項的代碼 –