设置首选项Android
我在应用程序中设置首选项时遇到问题 在主布局中,我有打开设置布局的按钮:设置首选项Android,android,key,preferences,setting,Android,Key,Preferences,Setting,我在应用程序中设置首选项时遇到问题 在主布局中,我有打开设置布局的按钮: Button btnPreferences = (Button) findViewById(R.id.btnPreferences); btnPreferences.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Intent i = new Inten
Button btnPreferences = (Button) findViewById(R.id.btnPreferences);
btnPreferences.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent("com.absolutkarlos.AppPreferenceActivity");
startActivity(i);
}
});
然后,它打开PreferenceActivity:
public class AppPreferenceActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//--load the preferences from an XML file---
addPreferencesFromResource(R.xml.user_references);
}
}
xml文件:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="Category 1">
<CheckBoxPreference
android:title="Checkbox"
android:defaultValue="false"
android:summary="True of False"
android:key="checkboxPref" />
</PreferenceCategory>
<PreferenceCategory android:title="Category 2">
<EditTextPreference
android:summary="Enter a string"
android:defaultValue="@string/food"
android:title="Edit Text"
android:key="editTextPref"
android:name="@string/name"/>
<RingtonePreference
android:summary="Select a ringtone"
android:title="Ringtones"
android:key="ringtonePref"
android:name="Ringtone Preference" />
<PreferenceScreen
android:title="Second Preference Screen"
android:summary=
"Click here to go to the second Preference Screen"
android:key="secondPrefScreenPref" >
<EditTextPreference
android:summary="Enter a string"
android:title="Edit Text (second Screen)"
android:key="secondEditTextPref"
android:name="EditText" />
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
看起来一切正常,但是当我测试它时,不要保存我想要保存的字符串。
我的意思是,我单击设置按钮,打开设置布局,在EditTextPreference调用名上写一个文本,但它不保存它,而是LogCat:sendUserActionEvet mView==null
那么,我做错了什么?我漏了一步吗?还是忘了加点什么
基本上,我只想用户写他的名字作为设置的一部分,这个名字将显示在主布局作为一个大标题。如果用户愿意,他可以写一个昵称。它只是一个应用程序必须永远记住的字符串
感谢您的帮助…正如您可能已经读到的,消息:
LogCat: sendUserActionEvet() mView == null
在S4设备上可以忽略
您需要读取Preference的值,并在AppPreferenceActivity的set onResume方法中更改其标题:
@Override
public void onResume(){
super.onResume();
EditTextPreference preference = (EditTextPreference) findPreference("secondEditTextPref");
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setTitle(newValue.toString());
return true;
}
});
String name = preference.getText();
if(name != null)
preference.setTitle(name);
}
此外,您必须从资源方法中删除addPreferencesFromResource,因为它已弃用。您应该使用onBuildHeaders方法。这里您可以看到。您的设备是S4?是的,它是。我在某个地方读到s4对此有一个问题,但是我能做些什么才能在我的s4和任何其他设备上运行良好。我可以在s4上测试,让我试试。我最近刚刚在一个s4上测试,SAMSUMG-SGH-I337,工作正常,当我设置OK按钮时,字符串被保存。我会发布,你问题的解决方案。