2017-07-17 1 views
0

Dans mon cas, j'ai activity avec 2 conteneurs pour fragments. Un conteneur afficher Fragment avec la liste, deuxième afficher des informations détaillées sur l'élément de liste sélectionné. Deuxième conteneur GONE par défaut.SearchView automatiquement fermé

Dans l'activité que j'ai SearchView, qui par exemple que je reçois de fragment comme ça:

@Override 
    public void onPrepareOptionsMenu(Menu menu) { 
     MenuItem searchMenuItem = menu.findItem(R.id.action_search); 
     rxSearchView = (RxSearchView) searchMenuItem.getActionView(); 
     rxSearchView.setSearchListener(taskListPresenter); 
     rxSearchView.setOnCloseListener(() -> { 
      taskListPresenter.clearSearch(); 
      return false; 
     }); 
    } 

et, j'utiliser la méthode setHasOptionsMenu(true); dans OnCreateView();

Problème cas:

1. L'utilisateur clique sur searchView, et obtient l'élément filtré:

enter image description here

2. utilisateur clique sur l'élément, appelant la méthode suivante:

`((MainActivity)getActivity()).showSecondaryFragment(TaskDetailFragment.newInstance();` 

En MainActivity c'est ressembler à ça:

getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.ltRightContainer, baseFragment) 
      .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) 
      .commit(); 

Après cela, SearchView automatiquement fermé, comme écran ci-dessous.

enter image description here

Comment fixer ce moment-là? Je ne veux pas qu'il se ferme automatiquement.

RxSearchView juste encapsuler avec l'implémentation RxJava, sans méthodes ovverride.

+0

Je pense que SearchView' se fermera automatiquement dès qu'il perdra le focus. Vous pouvez sous-classer et modifier cette logique. – azizbekian

+0

@azizbekian Salut, a été essayé méthodes ovverride avec l'accent, ce n'est pas aidé. Essayer de trouver la bonne méthode –

Répondre

0

Le deuxième fragment appelle simplement la méthode setupMenu(R.menu.menu_my_task); Il fait searchView à partir du premier fragment fermer.