5

我的用例:隱藏/顯示的所述上下文動作杆編程

我有一個ViewPager作爲其唯一的視圖元素,設置有三個Fragment S代表其三個頁面的活性(使用FragmentPagerAdapter)。其中一個片段是ListFragment,而另外兩個片段包含一些圖表。

ListFragment中的列表允許「檢查」元素,並且檢查元素會調出上下文操作欄,顯示可能對選定/檢查項目執行的操作列表。

我的問題:

當我選擇了幾個列表項中,CAB顯示出來。但是當我切換頁面時,CAB保持可見狀態,呈現動作。更糟糕的是,ViewPager似乎有時會破壞列表片段的視圖 - 因此,選擇操作會拋出"java.lang.IllegalStateException: Content view not yet created"異常。

我的問題:

  1. 我如何獲得駕駛室,當用戶從ListFragment頁面移開消失?
  2. (可選)當ListFragment返回時,如何讓CAB重新出現並且某些項目仍被檢查。

回答

1

您需要首先將ViewPager.OnPageChangeListenerViewPager.OnPageChangeListener添加到您的viewPager

onPageSelected方法調用您的ListFragment中的方法來解散您的CAB。

編輯:

要獲得當前活動片段,您可以使用它的標籤。該標籤可以用這種方法來computated:

private static String makeFragmentName(int viewId, int index) { 
    return "android:switcher:" + viewId + ":" + index; 
} 

其中viewId是viewpager和索引標籤索引(位置)

+0

中所述,您將如何從ViewPager訪問適當的ListFragment? – Joshua 2013-03-03 09:32:23

+1

我已編輯答案,添加有關如何訪問片段的信息 – david 2013-10-14 12:50:00

+0

ViewPager.OnPageChangeListener如何出現兩次?這是一個錯字還是它應該是別的嗎? – RightHandedMonkey 2016-05-16 11:17:22