我使EditTextPreference’textPasscode’取决于CheckBoxPreference’checkBoxPasscode’.一旦用户检查复选框,我想要’textPasscode’打开.甚至可以吗?
如果是,在onSharedPreferenceChanged()函数中可以使用什么?
如果是,在onSharedPreferenceChanged()函数中可以使用什么?
- public void onSharedPreferenceChanged(SharedPreferences prefs,String key) {
- if(key.contentEquals("checkBoxPasscode")){
- // ----some method to open edit text "textPasscode" ??
- }
- }
感谢名单
解决方法
这个问题对我来说非常烦人,所以在实现Sandor的建议之后,我已经在Android Reference中寻找更好的解决方案,并且看看我发现了什么.
EditTextPreference从 DialogPreference继承,这个类有showDialog方法,所以我用Edit方法从EditTextPreference创建了一个新类,它的作用就像一个charme.
EditTextPreference从 DialogPreference继承,这个类有showDialog方法,所以我用Edit方法从EditTextPreference创建了一个新类,它的作用就像一个charme.
这是一些代码:
- public class MyEditTextPref extends EditTextPreference {
- //...constructor here....
- public void show() {
- showDialog(null);
- }
- }
在我的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"
- />
最后我做的是PreferenceActivity中的onSharedPreferenceChanged方法
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) {
- if (key.equalsIgnoreCase(MY_CHECK_Box)) {
- MyEditTextPreferences myPref = (MyEditTextPreferences) findPreference("myPref");
- myPref.show();
- }
- }
ps:实际上我没有使用PreferenceFragment,因为我想要预蜂窝的兼容性,但我不认为这个代码变化很大.