Android 通过代码打开EditTextPreference(以编程方式)
我已使EditTextPreference“textPasscode”依赖于CheckBoxPreference“checkBoxPasscode”。我希望在用户选中复选框后立即打开“textPasscode”。。有可能吗? 如果是,我可以在Android 通过代码打开EditTextPreference(以编程方式),android,android-edittext,preferences,Android,Android Edittext,Preferences,我已使EditTextPreference“textPasscode”依赖于CheckBoxPreference“checkBoxPasscode”。我希望在用户选中复选框后立即打开“textPasscode”。。有可能吗? 如果是,我可以在onSharedPreferenceChanged()函数中使用什么 public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { if(key.conten
onSharedPreferenceChanged()
函数中使用什么
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if(key.contentEquals("checkBoxPasscode")){
// ----some method to open edit text "textPasscode" ??
}
}
我遇到了同样的问题。 我想知道这不是一个普遍的问题,网上关于这个的搜索结果太少了 虽然有一个明显的解决方法,但似乎无法从代码中手动显示EditTextPreference 通过创建警报对话框并处理OK按钮的OnClick事件,可以实现相同的外观和行为 这是文本输入对话框的简单通用代码:
public static EditText showInputDialog(Context context, OnClickListener clickListener, String message)
{
LayoutInflater factory = LayoutInflater.from(context);
final View textEntryView = factory.inflate(R.layout.dialogedittext, null);
final EditText editText = (EditText)textEntryView.findViewById(id.dialogEditText);
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder
.setTitle(message)
.setView(textEntryView)
.setPositiveButton("OK", clickListener)
.setNegativeButton("Cancel", null).show();
return editText;
}
只需传入一个OnClickListener并在那里处理首选项设置。
不要忘记设置EditText变量以接收用户输入的输入字符串
我希望这有助于为搜索此问题的人节省一些时间。这个问题令我非常恼火,因此在实施Sandor建议后,我在Android参考中搜索了更好的解决方案,看看我找到了什么。
继承自,该类具有showDialog方法,因此我使用show方法从EditTextPreference创建了一个新类,它的工作方式类似于charme 下面是一些代码:
public class MyEditTextPref extends EditTextPreference {
//...constructor here....
public void show() {
showDialog(null);
}
}
在my 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"
/>
注:事实上,我没有使用PreferenceFragment,因为我想要蜂巢前的兼容性,但我认为这段代码没有太大变化。非常感谢。这肯定会有帮助。我遇到了一个
BadTokenException:有时无法添加window
stacktrace。知道为什么吗?当我离开首选项活动
然后返回时,似乎会发生这种情况。我猜context
可能出了问题?这对自定义ListPreference也非常有效。有没有办法在PreferenceActivity之外找到引用?
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equalsIgnoreCase(MY_CHECK_BOX)) {
MyEditTextPreferences myPref = (MyEditTextPreferences) findPreference("myPref");
myPref.show();
}
}