2017-10-14 104 views
1

你好我有两个片段命名:OneFragment和ThreeFragment。如何从某些片段中删除searchview?

OneFragment在碎片中加载了ViewPager,名为AllNewsFragment。

ThreeFragment在碎片中加载了ViewPager,名为:SoccerFragment。

喜欢:AllNewsFragment-> OneFragment

SoccerFragment-> ThreeFragment

我添加了一个搜索查看使用此代码OneFragment:

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     menu.clear(); 
     inflater.inflate(R.menu.menu_search, menu); 
     MenuItem item = menu.findItem(R.id.action_search); 
     SearchView searchView = new SearchView(((navigation) getActivity()).getSupportActionBar().getThemedContext()); 
     MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); 
     MenuItemCompat.setActionView(item, searchView); 
     searchView.setOnQueryTextListener(
       new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       return false; 
      } 
      @Override 
      public boolean onQueryTextChange(String newText) { 
       adapter.getFilter().filter(newText); 

       return true; 
      } 
     }); 
     searchView.setOnClickListener(new View.OnClickListener() { 
              @Override 
              public void onClick(View v) { 

              } 
             } 
     ); 

    } 

它s工作prefectly但问题在于切换时到ThreeFragment中,searchview仍然显示在ThreeFragment中。

我试图在ThreeFragment中实现相同的代码onCreateOptionsMenu并添加searchView.setVisibility(View.GONE);但它不工作..

我想显示searchview只在OneFragment并从ThreeFragment中删除它。

谢谢。

回答

0

如果要在一个片段中执行搜索,请使用Edittext进行搜索,然后将EditText放入One Fragment(AllNewsFragment)XML中。 一样,如果你的EditText命名为(搜索框),那么你可以这样搜索:

searchbox.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void afterTextChanged(Editable editable) { 
      //after the change calling the method and passing the search input 
      adapter.getFilter().filter(newText); 
     } 
    }); 
+0

不,我并不想要使用的EditText –