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
如果要将工具栏用作主 *** 作栏,请在“活动”布局中移动工具栏而不是片段布局,并在“活动”中将其初始化一次.
如果您想在每个片段中使用单独的工具栏,请不要将任何工具栏设置为主 *** 作栏,而是使用Toolbar.inflateMenu()和Toolbar.setonMenuItemClickListener().然后,每个片段将直接在其自己的工具栏中膨胀自己的菜单项,而不涉及Activity.
总结以上是内存溢出为你收集整理的android – Viewpager不显示第一个片段的菜单项全部内容,希望文章能够帮你解决android – Viewpager不显示第一个片段的菜单项所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)