Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android编辑首选项屏幕中的文本_Android_Preferences - Fatal编程技术网

android编辑首选项屏幕中的文本

android编辑首选项屏幕中的文本,android,preferences,Android,Preferences,我可以在首选项屏幕中放置EditText元素吗 我想这样做,以便通过键入快速搜索大型ListPreference,但不想保存搜索框的内容?这是否可能,或者首选项屏幕上不允许使用标准布局控件 目标是提供一种选择时区并将其保存为首选项的方法。仅使用ListViewPreference是不够的,因为必须滚动大量时区。因此,我想提供一个“hypersearch”类型的输入框,用户可以在其中键入时区或时区的一部分,以缩小列表框的选择范围。您可以做的只是制作一个标准首选项,显示一个包含EditText的对话

我可以在首选项屏幕中放置EditText元素吗

我想这样做,以便通过键入快速搜索大型ListPreference,但不想保存搜索框的内容?这是否可能,或者首选项屏幕上不允许使用标准布局控件


目标是提供一种选择时区并将其保存为首选项的方法。仅使用ListViewPreference是不够的,因为必须滚动大量时区。因此,我想提供一个“hypersearch”类型的输入框,用户可以在其中键入时区或时区的一部分,以缩小列表框的选择范围。

您可以做的只是制作一个标准首选项,显示一个包含EditText的对话框,并添加一个ContextChangeListener:

searchET.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub              
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub              
        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
        }
    });
至于显示搜索结果,我不知道。我以前从未具体尝试过这些方法,但它似乎适合您,您必须找出执行搜索本身所需的任何代码,但这将添加初始功能

编辑: 在XML中,我指的是标准首选项:

<Preference
    android:title="Time Zone"
    android:summary="Choose your time zone"
    android:key="timeZone"/>

不过,我认为实际上可以使用EditTextPreference,然后将TextChangedListner添加到EditTextPreference,因为我认为它继承了EditText的所有内容。不过,我并不积极

从谷歌的快速搜索来看,没有简单的解决方案。不过,您可能希望了解一些不错的功能,称为[快速搜索框]()和。谢谢。当你说标准首选项时,你的意思是仅仅是一个普通的活动/布局,并且做存储自己的首选项,而不是从PreferenceActivity继承。这就是我一直计划做的,除非有更好的。“肯定有很多人都有这个问题。”我编辑了我的答案。当然,你也可以照你说的做,然后做一个有编辑文本的活动。我的解决方案需要打开一个对话框,但我个人觉得这比edittext更干净哦,不,你不能把edittext放在preferenceScreen中。对不起,我没有回答太多,所以在我的回答中,我只是给了你一个替代的解决方案
Preference timeZone = (Preference)findPreference("timeZone");
     timeZone.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference arg0) {
                showDialog(1);
                return false;
            }
        });



@Override
    protected Dialog onCreateDialog(int id) {

    switch (id) {       

    case 1: 
        final EditText searchET = new EditText(this);
//do the searchET.addTextChangedListener here
                 return new AlertDialog.Builder(this)
.setTitle("Choose Time Zone")
.setView(showAppString)
.setPositiveButton(new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
    //save the time zone to sharedPreferences
SharedPreferences pref = PreferenceManager.getDefaultSharedPreference(this);
SharedPreferences.Editor editor = pref.edit();
editor.putString("TIME_ZONE", TZ.toString());

}//closes the onClick
})//closes the onclicklistener
.show();
}//closes the switch

}//closes the oncreatedialog