2017-10-14 74 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 –