Viewpager not displaying menu items for first fragment

Viewed 1342

I have list items onlcick of list item I take to DetailActivity. DetailActivity is swipable using viewpager and Fragments. The issue is when DetailActivity is opened and Fragment is loaded no menu options are displayed however if i swipe left or right i get the menu options then when i return to the initial fragment the menu items are visible.

I am inflating the menu options in fragment.

DetailActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_article_new);

        mViewPager = (CustomViewPager) findViewById(R.id.viewPager);

        int currentItemIndex = mNewsItemList.indexOf(newsItem);

        mArticleSwipeMap = new HashMap<>();
        mPagerAdapter = new ArticlePagerAdapter(getSupportFragmentManager());
        mPagerAdapter.swapList(mNewsItemList);
        mViewPager.setOnSwipeOutListener(this);
        mViewPager.setAdapter(mPagerAdapter);
        mViewPager.setCurrentItem(currentItemIndex);
        mViewPager.addOnPageChangeListener(this);
    }

Adapter class

private class ArticlePagerAdapter extends FragmentStatePagerAdapter{
        private Map<Integer, ArticleFragment> mPageReferenceMap = new HashMap<>();
        private List<NewsItem> newsItemList;

        public ArticlePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            ArticleFragment articleFragment = ArticleFragment.newInstance(newsItemList.get(position));
            mPageReferenceMap.put(position, articleFragment);
            return articleFragment;
        }

        @Override
        public int getCount() {
            return newsItemList.size();
        }

        public void swapList(List<NewsItem> newsItemList){
            this.newsItemList = newsItemList;
            notifyDataSetChanged();
        }
    }

DetailFragment

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.toolbar_menu, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int itemId = item.getItemId();
        switch(itemId) {
            case R.id.action_more:
                View menuItemView = mRootView.findViewById(R.id.action_more);
                onMenuClick(menuItemView);
                break;
            case R.id.action_share:
                shareTextUrl();
                break;
        }
        return true;
    }

Update 1 : When I swipe left, menu item are not shown when i swipe right menu items are shown, now if i swipe left menu item are shown.

Has it got to do anything with setting up viewpager This is how I am setting up viewpager in onCrete of Activity

mPagerAdapter = new ArticlePagerAdapter(getSupportFragmentManager());
        mPagerAdapter.swapList(mNewsItemList);
        mViewPager.setOnSwipeOutListener(this);
        mViewPager.setAdapter(mPagerAdapter);
        mViewPager.setCurrentItem(currentItemIndex);
        mViewPager.addOnPageChangeListener(this);

Update 2 :

The issue is when I use custom toolbar it is not working. When i use with the DarkActionBar it works fine but when I use with NoActionBar with my custom toolbar it creates prob. Here is the sample proj I created which has same issue link to github https://github.com/KumarVelu/viewPagerDemo

2 Answers
Related