The*_*Bat 8 android android-fragments android-jetpack android-architecture-navigation android-jetpack-navigation
我正在使用 Android 导航组件制作应用程序。但是我遇到了一个非常基本的问题,它可能会导致我的应用程序的整个开发出现问题。
情景
我有这个片段,onViewCreated我在其中观察我的视图模型中的一个字段。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProviders.of(this).get(EventDetailsViewModel::class.java)
viewModel.init(context!!,eventId)
viewModel.onEventDetailsUpdated().observe(this, Observer {
setEventDetails(it)
})
}
Run Code Online (Sandbox Code Playgroud)
在该setEventDetails方法中,我使用数据设置了 recyclerviews。
问题
这个片段是一个带有卷轴的长片段。假设我向下滚动到一个部分,然后单击一个按钮,将我带到另一个片段。
但是当我回到这个片段时,它再次将我带到顶部并完成它在第一次加载时所做的一切。这可能令人不安。它有点像重新创建整个片段而不是保持其旧状态。
我试过的
我搜索了很多问题。并经历了This Github Query,This SO question,Another Git ......但我无法解决我的问题。
请帮助,提前致谢。
小智 -1
尝试将此代码放在您首先调用片段的位置。
ft = fm.beginTransaction();
ft.replace(R.id.main_fragment, yourSearchFragment, "searchFragment");
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
当回到片段时
ft = fm.beginTransaction();
ft.hide(getFragmentManager().findFragmentByTag("searchFragment"));
ft.add(R.id.main_fragment, yourDetailfragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |