2015-03-19 103 views
4

我已經使用ActionBar選項卡實現了兩個片段。我正在使用Sherlock碎片。當我開始一個片段時,我在操作欄上創建一個搜索視圖。使用ActionBar選項卡重置ViewPager片段更改上的SearchView

問題是:當我搜索第一個片段上的內容並且沒有關閉searchview或刪除文本時,我移動到下一個片段,我得到一個摺疊的searchview,這很好。但是當我再次回到我的第一個片段時,我看到一個像以前一樣排序的列表,但searchview被摺疊。獲取原始列表的唯一方法是單擊searchview並關閉它。

當我移動到第二個片段時如何重置第一個片段上的searchview,或者當我來到第一個片段時如何保持searchview打開?

任何一種解決方案都可以。

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
> 

<item android:id="@+id/action_search" 
    android:title="search" 
    android:icon="@drawable/search" 
    android:orderInCategory="100" 
    android:showAsAction="always|collapseActionView" 
    android:actionViewClass="com.actionbarsherlock.widget.SearchView" /> 

</menu> 

這是我如何在片段

@Override 
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
     { 
     super.onCreateOptionsMenu(menu, inflater); 

     inflater.inflate(R.menu.main, menu); 
     SearchView sv = (SearchView)getActivity().findViewById(R.id.action_search); 
      sv.setOnQueryTextListener(new OnQueryTextListener() { 
       @Override 
       public boolean onQueryTextSubmit(String query) { 
        //... 
        return false; 
       } 
       @Override 
       public boolean onQueryTextChange(String newText) { 
        bindingData.resetData(); 


        bindingData.getFilter().filter(newText.toString()); 
        return false; 
       } 
      }); 
    } 

回答

3

對於那些誰仍然摸不着頭腦和膨脹不能夠找到一個解決方案,在這裏,你是怎麼做到的。這很簡單:

只需在創建它時通過爲您的searchviews分配一個ID(通過創建ids.xml並在其中保留id並在運行時分配它)。 現在,在主選項卡活動的onTabUnselected()方法中,確定searchviews並使用函數setIconified(true)兩次(一次刪除文本,一次刪除搜索視圖)。

不要忘記在您的searchview的onQueryTextChange方法中爲空查詢字符串添加一個檢查,它爲我創建了一個問題。

+0

快速簡單的解決方案! – Shruti 2018-02-24 06:36:58

2

Android爲您提供了像onCreateonDestroy這樣的方法來處理活動,同樣也可以用於菜單onCreateOptionsMenuonDestoryOptionsMenu。您可以使用onDestroyOptionsMenu方法來清除您的SearchView或實現您的另一個想法。

例如:

@Override 
    public void onDestroyOptionsMenu() { 
     super.onDestroyOptionsMenu(); 

     if (searchView != null && 
      !searchView.getQuery().toString().isEmpty()) { 

      searchView.setIconified(true); 
      searchView.setIconified(true); 
     } 
    } 

它爲我,好運氣。

+0

完美的解決方案..! – 2018-01-30 10:12:55

相關問題