0

說實話,我不知道該寫什麼標題作爲這個問題的標題,因爲它有點複雜。如何在SearchView輸入後啓動片段

我有一個活動,一個片段和一個適配器。

該活動有一個ViewPager哪個適配器是FragmentStatePagerAdapter並且根據所選的項目或位置,它創建該片段的新實例。

片段適配器加載RecyclerView中的項目列表。 FragmentStatePagerAdapter中的每個新實例都是RecyclerView的不同字符串數組。

我在活動工具欄中設置了一個搜索視圖,當搜索中有輸入時,它應該在片段中啓動一個函數。

這些都是在片段是搜索的監聽功能

@Override 
    public boolean onQueryTextSubmit(String s) { 
     return false; 
    } 

    @Override 
    public boolean onQueryTextChange(String s) { 
     performSearch(s); 
     return false; 
    } 

    @Override 
    public boolean onClose() { 
     performSearch(null); 
     return false; 
    } 

    private void performSearch(final String query) { 
     if (mTimer != null) { 
      mTimer.cancel(); 
      mTimer.purge(); 
     } 
     mTimer = new Timer(); 
     mHandler = new Handler(); 
     mTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       mHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         mAdapter.filter(query); 
        } 
       }); 
      } 
     }, 150); 
    } 

的事情是,我不知道如何獲得當前片段,所以我可以設置fragment.onQueryTextChange(searchInput) 並防止其創建片段的新實例。

我想要做的,簡而言之,就是能夠使用已定義的實例獲取片段,並使其在搜索輸入中的文本過濾在實例中定義的數組中,在同一活動和頁面中的ViewPager

我不知道我是否足夠清楚。但如果你能幫忙,我會非常感激。

回答

1

我不確定,您正在尋找哪個片段。 您可以通過getFragmentManager().findFragmentById(R.id.container)mAdapter.getItem(position)的適配器從活動中獲得片段。然後確定您可以使用instanceof檢查片段類,然後調用您想要的任何方法。

+0

我有一個ViewPager和它的適配器是一個FragmentStatePagerAdapter –

+0

和whre是問題嗎?你可以用getItem()從適配器中獲取片段 – Kikju