【问题标题】:How to Keep selected tab in tablayout even after came back to the page in android kotlin即使返回到android kotlin中的页面,如何在tablayout中保留选定的选项卡
【发布时间】:2022-01-12 07:14:46
【问题描述】:

我的标签布局中有 3 个片段。 当我在第二个片段的选项卡布局中选择第二个片段时,我正在单击第二个片段的查看全部。进入第二个片段查看全部后,我正在单击后退按钮。 当时在我的选项卡布局中,它转到第一个片段而不是留在第二个片段中。 我需要留在选定的片段中。请帮助我如何做到这一点。

private const val NUM_TABS = 3
class ViewPageAdapter (fragmentManager: FragmentManager, lifecycle: Lifecycle) :
    FragmentStateAdapter(fragmentManager, lifecycle) {

    override fun getItemCount(): Int {
        return NUM_TABS
    }

    override fun createFragment(position: Int): Fragment {
        return when (position) {
            0 -> {
                TodayFragment()
            }
            1 -> {
                UpcomingFragment()
            }
            else -> {
                PastFragment()
            }
        }
    }
}

【问题讨论】:

    标签: android kotlin android-tablayout


    【解决方案1】:

    您需要在单击后存储选项卡索引。因此,如果您单击索引 0 处的选项卡,请将该值保存到 sharedpreferences。当您使用后退按钮返回选项卡时,在片段的 oncreate 方法中,读取共享首选项中的值并使用 if else 条件来查找保存的索引是什么。在 if else 中获得匹配后,以编程方式重新选择选项卡。

    【讨论】:

    • 如果您不介意,请说一下如何保存 sharedpreferences 中的值
    • 首先,获取共享首选项的实例:SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); MyPreferences 是您需要存储并持续使用的字符串。要保存,请执行sharedPreferences.edit().putInt("tabIndex", 0).apply(); 检索,请使用共享首选项实例:sharedPreferences.getInt("tabIndex", AN_INT_TO_BE_USED_AS_DEFAULT_IF_NOTHING_IS_SAVED_PREVIOUSLY);
    【解决方案2】:

    在您的第二个片段中,使用添加片段而不是替换片段。你可以看看here比较添加片段和替换片段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多