咨询:Android应用启动时获取初始Tab标题的实现方法
解决首次打开应用获取初始Tab标题的问题
嘿,这个问题其实很好解决!你目前只处理了Tab切换时保存标题的场景,但应用首次启动、用户还没切换Tab的时候,默认选中的Tab标题并没有被存入SharedPreferences。只需要在完成TabLayout和ViewPager的配置后,主动获取一次当前选中的Tab,把它的标题存进去就搞定啦。
方案一:直接添加初始获取逻辑
在你现有的addOnTabSelectedListener代码之后,加上这段代码:
// 应用启动时,主动获取当前选中的初始Tab TabLayout.Tab initialTab = tabLayout.getTabAt(tabLayout.getSelectedTabPosition()); if (initialTab != null) { String initialTabTitle = initialTab.getText().toString(); SharedPreferences.Editor editor = getSharedPreferences("PREFERENCIAS", MODE_PRIVATE).edit(); editor.putString("DATA", initialTabTitle); editor.apply(); }
逻辑说明:
tabLayout.getSelectedTabPosition():拿到当前默认选中的Tab的位置(默认是第0个,如果你手动设置了默认选中项,会返回对应的位置)getTabAt(position):通过位置获取对应的Tab对象,这里加非空判断是为了避免TabLayout还未初始化完成时出现空指针异常- 之后的保存逻辑和你切换Tab时的逻辑完全一致,把标题存入SharedPreferences即可
方案二:抽离复用逻辑(更推荐)
为了避免重复代码,你可以把保存标题的逻辑抽成一个独立方法,这样切换Tab和初始设置都能复用:
// 抽离保存标题到SharedPreferences的方法 private void saveTabTitleToPreferences(String tabTitle) { SharedPreferences.Editor editor = getSharedPreferences("PREFERENCIAS", MODE_PRIVATE).edit(); editor.putString("DATA", tabTitle); editor.apply(); } // 原有的Tab切换监听 tabLayout.addOnTabSelectedListener(new ViewPagerOnTabSelectedListener(myViewPager) { @Override public void onTabSelected(TabLayout.Tab tab) { super.onTabSelected(tab); String tabTitle = tab.getText().toString(); saveTabTitleToPreferences(tabTitle); } }); // 初始获取并保存默认Tab标题 TabLayout.Tab initialTab = tabLayout.getTabAt(tabLayout.getSelectedTabPosition()); if (initialTab != null) { saveTabTitleToPreferences(initialTab.getText().toString()); }
这样代码更整洁,后续如果要修改保存逻辑,只需要改这一个方法就好啦。
内容的提问来源于stack exchange,提问作者Nelson Silva
相关产品推荐
相关产品推荐

