你可以做的只是创建一个标准的 Preference,它将显示一个包含 EditText 的对话框,并添加一个 ontextchangelistener:
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"/>
并在您的 PreferenceActivity 中添加以下内容:
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
不过,我认为您实际上可以只使用 EditTextPreference,然后将 TextChangedListner 添加到 EditTextPreference,因为我认为它继承了 EditTexts 的所有内容。不过,我并不乐观。