为什么我可以滑到两次以上,而我在Android上只有两个标签?

为什么我可以滑到两次以上,而我在Android上只有两个标签?,android,android-fragments,navigation-drawer,android-tabs,Android,Android Fragments,Navigation Drawer,Android Tabs,我正在学习如何使用导航抽屉和导航选项卡。我创建了一个在MainActivity上实现导航抽屉的应用程序,导航抽屉上的每个项目都将把MainActivity上的片段替换为相应的片段 我的第一个片段使用和提供了两个导航选项卡。其他片段只是一个文本视图 如果我从第一个项目移动到第二个项目,然后再返回到第一个项目,我的选项卡仍然显示两个选项卡,但事实上,我可以滑动两次以上,并且内容不会显示 我该如何解决这个问题 它应该是什么: 在我移动到第二个抽屉,然后返回到第一个抽屉后: 之后发生了什么:

我正在学习如何使用导航抽屉和导航选项卡。我创建了一个在MainActivity上实现导航抽屉的应用程序,导航抽屉上的每个项目都将把MainActivity上的片段替换为相应的片段

我的第一个片段使用和提供了两个导航选项卡。其他片段只是一个文本视图

如果我从第一个项目移动到第二个项目,然后再返回到第一个项目,我的选项卡仍然显示两个选项卡,但事实上,我可以滑动两次以上,并且内容不会显示

我该如何解决这个问题

它应该是什么:

在我移动到第二个抽屉,然后返回到第一个抽屉后:

之后发生了什么:

您可以看到,我可以滑动两次以上,片段的内容没有显示

MainActivity.java

公共类MainActivity扩展了ActionBarActivity{ 字符串标题[]={TabsFragment,TextFragment}; 片段片段[]={TabsFragment.newInstance,TextFragment.newInstance}; 回收视图mRecyclerView; RecyclerView.适配器制造商; RecyclerView.LayoutManager mllayoutmanager; 抽屉式抽屉; ActionBarDrawerToggle mDrawerToggle; static View.OnClickListener drawerItemClickListener; @凌驾 受保护的void onCreateBundle savedInstanceState{ super.onCreatesavedInstanceState; setContentViewR.layout.activity_main; Toolbar Toolbar=Toolbar findViewByIdR.id.Toolbar; 设置支持操作工具栏; mRecyclerView=RecyclerView findviewbydr.id.RecyclerView; mRecyclerView.setHasFixedSizetrue; mAdapter=新的标题; DroperItemClickListener=new View.OnClickListener{ @凌驾 公共视图v{ int selectedPos=mRecyclerView.getChildPositionv; 抽屉; getSupportFragmentManager.beginTransaction .replaceR.id.main\u内容,片段[selectedPos] 犯罪 } }; mRecyclerView.setAdapterAdapter; mLayoutManager=新的LinearLayoutManagerthis; mRecyclerView.setLayoutManager布局管理器; 抽屉=抽屉布局findviewbydr.id.drawer\u布局; mDrawerToggle=新操作bardrawertoggle 这 抽屉 工具栏, R.string.打开抽屉, R.string.关闭抽屉{ @凌驾 图纸上的公共空白打开视图抽屉视图{ super.OnDraweropenedraverview; 支持失效操作菜单; } @凌驾 DrawerClosedView抽屉视图上的公共无效{ super.ondrawercloseddraverview; 支持失效操作菜单; } }; drawer.SetDrawerListenerDrawerToggle; mDrawerToggle.syncState; 如果savedInstanceState==null{ getSupportFragmentManager.beginTransaction .replaceR.id.main_内容,片段[0] 犯罪 } }
} 如果滑动次数超过两次是正确的,那么您需要正确设置覆盖方法getCount,我知道您知道。这是你唯一需要担心的问题

private String[] tabTitles = new String[] {"Tab One", "Tab Two"};
...
     @Override
     public int getCount() {
         return tabTitles.length;
     }

注意:我将tabTitles声明为字符串[]的数组,这一点已被广泛接受。其他样式的tabTitles[]可能无法与length等方法配合使用。

仔细查看您的代码,我怀疑对象TabOneFragment和TabTwoFragment工作不正常。通常,override getItem返回相同的静态片段。当然,我看不到它的声明或代码

我建议的尝试来自您的代码:

@Override
public android.support.v4.app.Fragment getItem(int position) {
   return TabsFragment.newInstance(position);
}

注意:对于上面的代码,我看不到TabOneFragment和TabTwoFragment有任何用途,它们在SamplePagerAdapter类的getItemint位置中引用。layout fragment_tab_one.xml中的TextView UI仅用于选项卡文本。对于这些文本,可以使用override getPageTitleint位置,并且已经编码。

TabOneFragment和TabTwoFragment是另外两个片段。我没有在那里显示代码,因为我认为它只是一个文本视图。我希望我的应用程序在用户单击选项卡时显示文本视图。TabOneFragment是一个片段,不少于,不是文本视图。因此,可能该代码需要更改。出于调试目的,请尝试我建议的代码,看看是否仍会出现奇怪的行为。我会编辑我的帖子来表达我的观点。我已经在Github上上传了我的代码,以防你想亲自尝试。如果你能帮助我,我将感激不尽。