【问题标题】:How can i add back stack to my tab layout?如何将回栈添加到我的选项卡布局?
【发布时间】:2019-09-04 08:46:51
【问题描述】:

在我的项目中,我在选项卡布局中使用了视图页面适配器,无法将回栈添加到选项卡布局

如何将后台堆栈添加到我的选项卡布局中

我在这个项目中使用了 android studio

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tabLayout=findViewById(R.id.tablayout);
            viewPager=findViewById(R.id.viewPager);
            ViewPageAdapter adapter =new 
            ViewPageAdapter(getSupportFragmentManager());
            adapter.AddFragment(new BlankFragment(),"first");
            adapter.AddFragment(new BlankFragment2(),"second");
            adapter.AddFragment(new BlankFragment3(),"third");
            viewPager.setAdapter(adapter);
            tabLayout.setupWithViewPager(viewPager);
}

需要获取选项卡布局的 backstacks

【问题讨论】:

  • 添加 backstack 到底是什么意思?根据你应该发生什么?
  • 例如,如果我点击第三个(标签或片段)第一个和第二个(标签或片段)旁边的第三个,现在我需要返回堆栈,当我点击后退按钮时,第二个标签应该消失并且必须打开上一个(第三个标签)
  • 这将是一个不好的方式来实现标签布局,假设如果用户在标签之间来回移动 10 次,那么用户必须点击 10 次才能返回屏幕/退出应用程序跨度>
  • @ManoharReddy 我认为我们可以使用 pop backstack 这样就不需要 10 次返回?这可能吗?

标签: android android-fragments android-recyclerview android-tablayout


【解决方案1】:

你可以像这样在 onBackPressed() 方法中处理后退按钮

override fun onBackPressed() {
       if(viewPager.currentItem > 0){
            viewPager.currentItem = viewPager.currentItem - 1
        }else {
            super.onBackPressed()
        }
}

【讨论】:

  • 如果我先转到第三个选项卡,然后转到第二个选项卡,然后单击后退按钮,它将转到第一个选项卡而不是第三个选项卡???
  • 我认为这是糟糕的用户体验
【解决方案2】:

您可以做的最好的事情是将标签位置保存在列表中 当用户切换选项卡时。当用户点击返回时,将用户导航到特定选项卡并从列表中删除元素,直到列表中没有元素。

还要确保您在保存的列表中没有重复的位置,这样用户在按下返回时不会转到相同的选项卡。

再说一遍,这将是实现选项卡布局的糟糕方法。用户通常不会期望在单击后退按钮时转到上一个选项卡。他们希望转到上一个屏幕/退出应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多