Android设置和首选项

时间:2015-10-21 02:15:24

标签: android android-fragments

我已经设置了我的设置活动,并且在运行我的模拟时,我可以编辑我的设置..关闭应用程序并再次启动它并保持相同状态。 现在当我想从活动textview中引用它时,我得到了我第一次写入strings.xml的密钥,这是unitnumkey,但是设置活动存储它很好..

我到底错过了什么?

这里是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(), ""));
    }

1 个答案:

答案 0 :(得分: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);