在Android设备上,动态添加的第一个和最后一个选项卡不显示ActionBar

时间:2015-04-18 01:22:52

标签: android android-actionbar android-viewpager fragment fragmentpageradapter

当为我的Android应用程序实例化Activity时,还会创建ViewPager和FragmentPagerAdpter。

最初创建Tab1的Fragment1。当为Fragment1调用onCreateView()时,ActionBar也会膨胀并设置为当前活动。到现在为止还挺好。 Android设备上的显示效果很好。

当用户按下"添加" ActionBar上的按钮,Tab2的Fragment2如上所述创建。我可以在两个标签之间来回滑动。并且ActionBar在Tab1 / 2上显示正常。

添加新片段时,会将其添加到ArrayList,并调用FragmentPagerAdapter.notifyDataSetChanged()。这样可以显示新的Tab。

然而,在为Tab3添加Fragment3之后,当我滑动它时,ActionBar没有显示。但Tab3的Fragment3清晰可见。当我滑回Fragment2时,ActionBar会出现。当我向后滑动到Fragment3时,ActionBar再次消失。

当我为Tab4添加Fragment4时,当我向它滑动时,ActionBar再次消失。但是现在ActionBar显示了Tab3的Fragment3,而当它是最后一个Fragment时则不是这样。

因此,当动态添加3个或更多片段时,ActionBar不会显示最后一个片段。对于这种情况,ActonBar也没有出现在第一个Fragent上。

跟踪调用后,当我滑动到第一个或最后一个片段并且未显示ActionBar时,会调用onPause()方法。对于ActionBar显示正常的中间片段,当我滑动到其中一个时,会调用onCreateView()方法。

我对上面与Fragments的ActionBar显示相关的不一致行为感到非常困惑。我不确定为什么在第一个/最后一个片段上调用onPause()是最新的片段。这似乎是没有显示ActionBar的罪魁祸首。

以下是一些代码段:

public class MyApp extends Activity {

    protected void onCreate(Bundle icicle) {
    ....
            ViewPager viewPager;
            TabsPagerAdapter mAdapter;
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
            viewPager.setAdapter(mAdapter);
    ....
}

public class TabsPagerAdapter extends FragmentPagerAdapter 
    implements ViewPager.OnPageChangeListener {

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
    }
   ....

public class MyFragment extends Fragment  implements {

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    .....
            View actionBarButtons =                       
                 inflater.inflate(R.layout.actionbar,
                 new LinearLayout(mActivity), false);
     ... add buttons here....
            mActivity.getActionBar().setCustomView(actionBarButtons);
    .....
}

0 个答案:

没有答案
相关问题