Android 如何设置edittext首选项摘要并使其保持不变
在这件事上,我已经倒数第四了,我就是搞不懂。我正在使用首选项片段设置设置。我可以让设置生效,甚至可以在进行更改时更新“摘要”。但是,如果我离开设置屏幕并返回,则摘要将返回默认文本。所以问题是,当使用edittext首选项时。如何更新摘要以显示用户更改设置的内容,并使其在关闭屏幕和应用程序时保持不变?在这种情况下,当我的用户更改mse_ip时,摘要将更改为“mse ip x.x.x.x”,但当我离开设置屏幕并返回时,它将返回到@string/mseip设置为的“0.0.0.0” preferences.xmlAndroid 如何设置edittext首选项摘要并使其保持不变,android,android-edittext,preference,summary,Android,Android Edittext,Preference,Summary,在这件事上,我已经倒数第四了,我就是搞不懂。我正在使用首选项片段设置设置。我可以让设置生效,甚至可以在进行更改时更新“摘要”。但是,如果我离开设置屏幕并返回,则摘要将返回默认文本。所以问题是,当使用edittext首选项时。如何更新摘要以显示用户更改设置的内容,并使其在关闭屏幕和应用程序时保持不变?在这种情况下,当我的用户更改mse_ip时,摘要将更改为“mse ip x.x.x.x”,但当我离开设置屏幕并返回时,它将返回到@string/mseip设置为的“0.0.0.0” preferenc
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:key="mse_ip"
android:title="MSE IP"
android:summary="@string/mseip"
android:defaultValue="0.0.0.0"
android:dialogTitle="IP Address for mse" />
<EditTextPreference
android:key="mse_username"
android:title="Username"
android:summary="MSE Username %s"
android:defaultValue="Admin"
android:dialogTitle="Username for mse" />
<EditTextPreference
android:key="mse_password"
android:title="MSE Password"
android:password="true"
android:summary="******"
android:defaultValue="Admin"
android:dialogTitle="Password for mse" />
</PreferenceScreen>
setpreferenceactivity
import android.os.Bundle;
import android.app.Activity;
public class SetPreferenceActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content,
new PrefsFragment()).commit();
//setContentView(R.layout.activity_set_preference);
}
}
看起来您只是更新了EditText的值。通过调用
SharedReferences.edit().putString(key,editTextPreference.getText()).apply()代码>
这可以在更新引用(字符串键)
函数中调用。您必须将OnPreferenceChangeListener设置为您的首选项。等等
每次首选项更改,调用setSummary,都会更改摘要显示。这可能是
示例代码:
final Preference pref = getPreferenceManager().findPreference(
PREF_KEY);
pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
pref.setSummary(newValue.toString());
return true;
}
});
您还应该在onCreate()中调用首选项的setSummary方法,
因此,该摘要显示您的SharedReference值 通过使用(请参见),添加以下属性就足够了:
<EditTextPreference
...
app:useSimpleSummaryProvider="true" />
很有趣。不幸的是,它不是包含%$1s的字符串文本。
<EditTextPreference
...
app:useSimpleSummaryProvider="true" />