【问题标题】:Get text from EditTextPreference and save it从 EditTextPreference 获取文本并保存
【发布时间】:2014-08-03 10:49:48
【问题描述】:

我正在尝试构建一个设置菜单,但我遇到了一些麻烦......

  1. 我无法从EditTextPreference 获取文本
  2. 我无法将其插入到我的sharedPreferences 文件中

我可以帮忙吗?

首选项类

    @Override
protected void onResume() {
    super.onResume();
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
    super.onPause();
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
    SharedPreferences.Editor editor = sharedPreferences.edit();
    contact1 = (EditTextPreference) findPreference("contact1");
    editor.putString("contact1", String.valueOf(contact1)).commit();
}

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs);
}

首选项 XML

<?xml version="1.0" encoding="utf-8"?>

<EditTextPreference
    android:title="Contact 1"
    android:key="@+id/contact1"
    android:summary="Enter your contact">
</EditTextPreference>

<EditTextPreference
    android:title="Contact 2"
    android:key="@+id/contact2"
    android:summary="Enter your contact">
</EditTextPreference>

获取主要活动的数据

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

    SharedPreferences settings =          PreferenceManager.getDefaultSharedPreferences(getBaseContext());
    number1 = settings.getString("contact1", "");
    number2 = settings.getString("contact2", "");
    contact1 = "tel: " + number1;
    contact2 = "tel: " + number2;

【问题讨论】:

  • 您是否将“PreferenceActivity”扩展到您的设置活动?
  • 是的,我用过……还有一个工具
  • 您能否添加与此过程相关的所有其他代码段?例如:settings.xml
  • @ZuseeWeekin Done... 我可以打开设置菜单,单击框,但是当我编辑一些文本时它不会保存它

标签: java android sharedpreferences android-preferences


【解决方案1】:

使用这些方式...

public class AdvancePreferenceExample extends PreferenceActivity implements OnSharedPreferenceChangeListener{

    private static final String KEY_EDIT_TEXT_PREFERENCE = "name";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
    }

    @Override
    protected void onResume(){
        super.onResume();
        // Set up a listener whenever a key changes
        getPreferenceScreen().getSharedPreferences()
            .registerOnSharedPreferenceChangeListener(this);
        updatePreference(KEY_EDIT_TEXT_PREFERENCE);
    }

    @Override
    protected void onPause() {
        super.onPause();
        // Unregister the listener whenever a key changes
        getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        updatePreference(key);
    }

    private void updatePreference(String key){
        if (key.equals(KEY_EDIT_TEXT_PREFERENCE)){
            Preference preference = findPreference(key);
            if (preference instanceof EditTextPreference){
                EditTextPreference editTextPreference =  (EditTextPreference)preference;
                if (editTextPreference.getText().trim().length() > 0){
                    editTextPreference.setSummary("Entered Name is  " + editTextPreference.getText());
                }else{
                    editTextPreference.setSummary("Enter Your Name");
                }
            }
        }
    }

}

here is sample

【讨论】:

  • 一直在搜索更多...问题可能不在我的 Preferences 类上,但是当我尝试导入共享首选项值时...我已经编辑了帖子
猜你喜欢
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2014-07-09
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多