OnQueryTextChange запускается после возобновления приложения

Я окружен анимированным поиском onQueryTextListener. Когда активность и фрагмент созданы сначала, он работает хорошо. Затем я нажимаю кнопку «домой», открываю другие приложения, выполняю некоторые работы, чтобы стереть данные активности searchview, а затем вернуться в приложение. А когда активность и фрагмент возобновляются методом onQueryTextChange, он запускается собственным. Я попробовал эту проблему. Замена Fragment заменила onQueryTextChange на searchview, но это не помогло, помогает только при поиске SHOW_AS_ACTION_NEVER, но в этом случае я не вижу searchview. Как предотвратить самозапуска OnQueryTextListener? Фрагмент фрагмента

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { searchView = new SearchView(getSherlockActivity().getSupportActionBar() .getThemedContext()); searchView.setOnQueryTextListener(new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { // TODO Auto-generated method stub return false; } @Override public boolean onQueryTextChange(String newText) { if (newText.length() > 0) { fpAdapter.getFilter().filter(newText); } else { loadData(); } return false; } }); TextView searchText = (TextView) searchView .findViewById(R.id.abs__search_src_text); searchText.setTextColor(Color.WHITE); searchText.setCursorVisible(false); ImageView searchButton = (ImageView) searchView .findViewById(R.id.abs__search_button); searchButton.setImageResource(R.drawable.search_menu_button); LinearLayout searchEditFrame = (LinearLayout) searchView .findViewById(R.id.abs__search_edit_frame); searchEditFrame.setBackgroundResource(android.R.color.transparent); View searchPlate = searchView.findViewById(R.id.abs__search_plate); searchPlate.setBackgroundColor(Color.argb(0, 0, 0, 0)); menu.add("Search") .setActionView(searchView) .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); final MenuItem searchMenuItem = menu.getItem(0); final Animation in = AnimationUtils.loadAnimation(getSherlockActivity() .getApplicationContext(), R.anim.search_in); final Animation out = AnimationUtils.loadAnimation( getSherlockActivity().getApplicationContext(), R.anim.search_out); searchView.setQueryHint(getResources().getText( R.string.search_messages_hint)); searchView.setIconifiedByDefault(true); searchView .setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View view, boolean queryTextFocused) { if (!queryTextFocused) { // searchView.startAnimation(out); searchMenuItem.collapseActionView(); } else { searchView.startAnimation(in); } } }); super.onCreateOptionsMenu(menu, inflater); } 

Обновление: это появляется только в HTC sensation XL с Android 4.0.3, на 4.2. Я не вижу этой проблемы.

    Найдено единственное решение – set listener in onResume:

     @Override public void onResume() { super.onResume(); searchView.setOnQueryTextListener(new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { // TODO Auto-generated method stub return false; } @Override public boolean onQueryTextChange(String newText) { if (newText.length() > 0) { fpAdapter.getFilter().filter(newText); } else { loadData(); } return false; } }); } 

    Используйте этот код

      searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(final String s) { if(searchView.getWidth()>0) { // your code here } return false; } });