【发布时间】:2020-01-21 20:02:53
【问题描述】:
在我的 MainActivity 中,我有一个底部菜单和一个 FrameLayout。 每个底部使用以下代码加载特定片段:
bottomNavigation.setOnClickMenuListener {
when (it.id) {
1 -> supportFragmentManager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.replace(R.id.frame, ProfileFragment())
.commit()
2 -> supportFragmentManager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.frame, MyCalendarFragment())
.commit()
3 -> supportFragmentManager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.frame, ScoreFragment())
.commit()
}
}
问题是在移动到其他片段之后,旧的片段状态将被消除, 我如何保存当前片段的状态并在我回到这个片段时加载它。
【问题讨论】:
-
你每次都在创建新的片段,你可以用你的创建数组,比如
.replace(R.id.frame, array[it.id - 1]),其中数组是array = listOf(ProfileFragment(), ...) -
你应该把你想要的参数放在一个包中。在您的片段中放置一个静态方法以创建实例,以从包中检索参数。不要只是创建新实例。有更好的方法来实现这一点。 android现在支持按钮导航,不用写代码了How to add a Bottom Navigation Bar in Android
-
我尝试使用数组,但我没有工作@AlexandrKolesnik