我使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,因为我想要预蜂窝的兼容性,但我不认为这个代码变化很大.