Я пытаюсь использовать версию SearchView Support v4 с помощью sherlock.Android abs с SearchView, onQueryTextListener не работает
Итак, у меня есть кнопка поиска в панели действий -> когда я прикасаюсь к ней, появляется клавиатура и поиск.
Моя проблема в том, что мне нужно использовать слушателей onQueryTextSubmit и onQueryTextChange, но они никогда не запускаются. Мне нужно использовать строку запроса поиска и делать с ней специальные вещи.
Вот полный activity.java
public class ActivityMain extends SherlockFragmentActivity implements OnQueryTextListener, DialogFragmentListener {
/**
* PRIVATE ATTRIBUTES
*/
private static final String TAG = "ActivityMain";
private ViewPager _viewPager;
private TabsAdapter _tabsAdapter;
private DialogFiltre _dialogFiltre;
private String _searchCurrentQuery;
// data
private boolean _doubleBackToExitPressedOnce = false;
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
switch ((int) _viewPager.getCurrentItem()) {
case 0:
getSupportMenuInflater().inflate(R.menu.empty_menu, menu);
break;
case 1:
getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu);
break;
case 2:
getSupportMenuInflater().inflate(R.menu.empty_menu, menu);
break;
}
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu);
MenuItem searchItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(queryTextListener);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
Log.i(TAG, "onQueryTextSubmit--");
onSearchClicked(query);
// hide keyboard
InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
Log.d(TAG, "onQueryTextChange--");
_searchCurrentQuery = newText.toString();
EtablissementApplication._adapter.getFilter().filter(_searchCurrentQuery);
return true;
}
private void onSearchClicked(String query) {
Log.d(TAG, "onSearchClicked--");
_searchCurrentQuery = query.toString();
EtablissementApplication._adapter.getFilter().filter(_searchCurrentQuery);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
break;
case R.id.search:
break;
case R.id.menu_filtre:
_dialogFiltre = DialogFiltre.newInstance(R.string.menu_filtre, this);
_dialogFiltre.setValidDialogListener(this);
_dialogFiltre.show(getSupportFragmentManager(), null);
break;
}
return super.onOptionsItemSelected(item);
}
ваше предложение хорошее, я пытался, но я до сих пор не получите мой журнал. Есть ли что-нибудь, что мне нужно установить в манифесте или где-нибудь еще, что может заблокировать слушателей? –
Из предоставленного фрагмента я не вижу никаких других ошибок. Опубликуйте полный код операции с импортом и, возможно, мы что-нибудь увидим. –
Я скопировал всю деятельность, когда проблема решена, я удалю это из должности ... –