簡體   English   中英

在片段之間滑動時消失的操作欄按鈕

[英]Disappearing action bar buttons when swiping between fragments

我在操作欄中有一個帶有多個選項卡的應用程序,每個選項卡都有一組不同的選項菜單圖標顯示在操作欄中。 有些標簽有兩個圖標,有些沒有。

問題是,當我在屏幕之間滑動時,各個屏幕的按鈕可能會顯示也可能不會顯示。 即在屏幕上應該有兩個圖標,操作欄中將沒有圖標!

但是,當我單擊選項卡時,屏幕始終顯示正確的圖標。

我試過在調試器中分析問題。 我確定FragmentPagerAdapter正在為新選擇的Fragment正確調用setMenuVisibility(true) ,並且使用setMenuVisibility(false)調用其他Fragment。

我無法找到按鈕外觀/消失的確切模式。 我可以在兩個屏幕之間向左/向右滑動,每個屏幕都有兩個不同的按鈕。 在1到20次滑動之后,問題將發生在任何地方。

通過使用一個圖標滑動到屏幕然后返回到帶有兩個圖標的屏幕,消失似乎更加嚴重。

我已經嘗試將調用添加到Activity.invalidateOptionsMenu()但它似乎沒有任何影響。 例如,我將此調用添加到我的TabAdapter的onPageScrollStateChanged()中,該調用在滑動動畫完成后調用。 我也嘗試將它添加到Fragments的onResume()或TabAdapter.onTabSelected()完成之后,無濟於事。

我正在使用ActionBarSherlock 4.1.0(我在最新的android-support-v4.jar中替換了因為一個不同的問題)。 我的Activity擴展了SherlockFragmentActivity並簡單地實例化了一個ViewPager 我已經為ViewPager的適配器覆蓋了FragmentPagerAdapter (遵循ViewPager Android文檔上的標准示例)。

我的手機運行的是Android 2.3.5。

ViewPager / ActionBar中提供了此問題的幾種解決方法,菜單項未顯示 第8項中討論的修復對我有用。

只需點擊此鏈接即可

if (viewPager.getCurrentItem() != position)
  viewPager.setCurrentItem(position);

將調用推遲到onCreate中的viewPager.setCurrentItem

public void onCreate(...) {
    ...
    view.post(new Runnable() {
        public void run() {
            // guarded viewPager.setCurrentItem
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM