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

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

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

添加新Fragment时,会将其添加到ArrayList,并调用FragmentPagerAdapter.notifyDataSetChanged() . 这允许新的Tab可见 .

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

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

因此,当有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);
    .....
}