mr.*_*oot 6 android instagram back-stack bottomnavigationview android-viewpager2
我创建了一个 android 应用程序(示例 APK和Github Repo),我在其中实现了一个BottomNavigationBarwith ViewPager. 导航没问题,但我不知道如何在像 Instagram 这样的 viewpager 中处理返回堆栈。
我尝试了下面的代码,但这样我必须创建一个我从不导航的不必要的片段。
view_pager_main_activity?.currentItem = view_pager_main_activity.currentItem - 1
Run Code Online (Sandbox Code Playgroud)
假设我只是将应用程序启动到第一页,然后通过 BottomNavBar 导航到第三页,但是现在如果我单击后退按钮,我会通过第二页返回到第一页。所以这样我创建了不需要的第二页。
这是 onBackPressed() 的整个回栈过程
override fun onBackPressed() {
if (view_pager_main_activity?.currentItem == 0) {
if (view_pager_main_fragment?.currentItem == 0) {
val recyclerView = findViewById<RecyclerView>(R.id.listRecyclerView)
val appbarHome = findViewById<AppBarLayout>(R.id.appbar_home)
val layoutManager = recyclerView?.layoutManager as LinearLayoutManager
when {
layoutManager.findFirstCompletelyVisibleItemPosition() == 0 -> {
super.onBackPressed()
}
supportFragmentManager.backStackEntryCount != 0 -> {
supportFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}
else -> {
layoutManager.scrollToPositionWithOffset(0, 0)
appbarHome.setExpanded(true)
}
}
} else if (supportFragmentManager.backStackEntryCount != 0) {
super.onBackPressed()
} else {
view_pager_main_fragment?.setCurrentItem(
view_pager_main_fragment.currentItem - 1,
false
)
}
} else if (supportFragmentManager.backStackEntryCount != 0) {
super.onBackPressed()
} else {
view_pager_main_activity?.currentItem = view_pager_main_activity.currentItem - 1
}
}
Run Code Online (Sandbox Code Playgroud)
我想要与 Instagram 一样的返回堆栈导航,所以我尝试了这种方式,但已弃用。我不知道我怎样才能做到这一点。
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |