Ayr*_*nna 10 android preferences android-edittext
我已经使EditTextPreference'textPasscode'依赖于CheckBoxPreference'checkBoxPasscode'.我想在用户选中复选框后立即打开'textPasscode'.它甚至可能吗?如果是,我可以在onSharedPreferenceChanged()函数中使用什么?
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if(key.contentEquals("checkBoxPasscode")){
// ----some method to open edit text "textPasscode" ??
}
}
Run Code Online (Sandbox Code Playgroud)
ilm*_*col 12
这个问题对我来说非常烦人,所以在实施Sandor建议后,我在Android Reference中搜索了更好的解决方案,看看我发现了什么.
EditTextPreference继承自DialogPreference,这个类有showDialog方法,所以我使用show方法从EditTextPreference创建了一个新类,它就像一个魅力.
这是一些代码:
public class MyEditTextPref extends EditTextPreference {
//...constructor here....
public void show() {
showDialog(null);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的settings.xml中(我用它来生成ActivitySettings布局)我添加了myEditTextPref
<package.that.contains.MyEditTextPreferences
android:key="myPref"
android:title="@string/pref_title"
android:summary="@string/pref_summary"
android:dialogTitle="@string/dialog_title"
android:dialogMessage="@string/dialog_message"
/>
Run Code Online (Sandbox Code Playgroud)
我做的最后一件事是PreferenceActivity中的onSharedPreferenceChanged方法
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equalsIgnoreCase(MY_CHECK_BOX)) {
MyEditTextPreferences myPref = (MyEditTextPreferences) findPreference("myPref");
myPref.show();
}
}
Run Code Online (Sandbox Code Playgroud)
ps.:实际上我没有使用PreferenceFragment,因为我想要预蜂窝兼容性,但我不认为这个代码有太大变化.
| 归档时间: |
|
| 查看次数: |
2839 次 |
| 最近记录: |