gpt4 book ai didi

java - 从 EditTextPreference 获取文本并保存

转载 作者:太空狗 更新时间:2023-10-29 14:14:14 26 4
gpt4 key购买 nike

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

  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>

获取主要 Activity 的数据

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;

最佳答案

使用这些方式...

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

关于java - 从 EditTextPreference 获取文本并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24195800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com