[英]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.