android – Viewpager不显示第一个片段的菜单项

android – Viewpager不显示第一个片段的菜单项,第1张

概述我有列表项的onlcick我带到DetailActivity的列表项. DetailActivity可使用viewpager和Fragments进行转换.问题是当DetailActivity打开并加载Fragment时没有显示菜单选项但是如果我向左或向右滑动我会得到菜单选项 然后,当我返回到初始片段时,菜单项是可见的. 我正在膨胀片段中的菜单选项. DetailActivity @Override 我有列表项的onlcick我带到DetailActivity的列表项.
DetailActivity可使用vIEwpager和Fragments进行转换.问题是当DetailActivity打开并加载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);    }

适配器类

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;    }

更新1:当我向左滑动时,当我向右滑动菜单项时显示菜单项,现在如果我向左滑动菜单项则显示.

它是否可以设置vIEwpager做任何事情
这就是我在onCrete of Activity中设置vIEwpager的方法

mPagerAdapter = new ArticlePagerAdapter(getSupportFragmentManager());        mPagerAdapter.swapList(mNewsItemList);        mVIEwPager.setonSwipeOutListener(this);        mVIEwPager.setAdapter(mPagerAdapter);        mVIEwPager.setCurrentItem(currentItemIndex);        mVIEwPager.addOnPagechangelistener(this);

更新2:

问题是当我使用自定义工具栏时,它无法正常工作.当我使用DarkActionbar时它工作正常,但当我使用NoActionbar和我的自定义工具栏时,它会创建prob.
 这是我创建的具有相同问题的示例项目
链接到github https://github.com/KumarVelu/viewPagerDemo

解决方法 问题是您正在尝试设置多个主Actionbar,因为每个片段都有自己的工具栏.因此,当VIEwPager加载当前页面并预加载下一页时,您有2个片段试图将自己的工具栏设置为主Actionbar并且它们是冲突的.

如果要将工具栏用作主 *** 作栏,请在“活动”布局中移动工具栏而不是片段布局,并在“活动”中将其初始化一次.

如果您想在每个片段中使用单独的工具栏,请不要将任何工具栏设置为主 *** 作栏,而是使用Toolbar.inflateMenu()和Toolbar.setonMenuItemClickListener().然后,每个片段将直接在其自己的工具栏中膨胀自己的菜单项,而不涉及Activity.

总结

以上是内存溢出为你收集整理的android – Viewpager不显示第一个片段的菜单项全部内容,希望文章能够帮你解决android – Viewpager不显示第一个片段的菜单项所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1122782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存