Activityは1つでFragmentは複数あり、1つのActivityの中でView切替をしてます。
その中で、あるFragmentでは検索バーを出したいなと思いToolbarを呼び出してみたのですが、inflateMenuした後にFragment切替をするとそのままMenuが残ってしまい。
Fragmentを切り替えたときは検索バーを消したいなと思い下記の対応で消してみました。
- FragmentのonCreateView内で検索バーを追加
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_memo_list, container, false);
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
toolbar.inflateMenu(R.menu.search);
SearchView searchView = (SearchView) toolbar.getMenu().findItem(R.id.menu_search).getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return view;
}
getActivity().findViewByIdでActivityのViewからToolbarのインスタンスを取得し追加
- FragmentのonDestroyView内で検索バーをクリアする
@Override
public void onDestroyView() {
Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);
toolbar.getMenu().clear();
super.onDestroyView();
}