Android 替换片段后,旧片段中的视图仍保留在内容视图中
我遇到了一个特殊的bug:在我的应用程序中,我有一个底部导航栏,它使用以下代码替换FrameLayout视图中的片段:Android 替换片段后,旧片段中的视图仍保留在内容视图中,android,android-fragments,android-permissions,Android,Android Fragments,Android Permissions,我遇到了一个特殊的bug:在我的应用程序中,我有一个底部导航栏,它使用以下代码替换FrameLayout视图中的片段: override fun setFragment(frag: Fragment, addToBackStack: Boolean) { FirebaseAnalytics.getInstance(this).setCurrentScreen(this, frag::class.java.simpleName, frag::class.java.simpleName)
override fun setFragment(frag: Fragment, addToBackStack: Boolean) {
FirebaseAnalytics.getInstance(this).setCurrentScreen(this, frag::class.java.simpleName, frag::class.java.simpleName)
val ft = supportFragmentManager.beginTransaction()
.setCustomAnimations(R.anim.fragment_in, R.anim.fragment_out, R.anim.fragment_in, R.anim.fragment_out)
.replace(R.id.container, frag)
if (addToBackStack) {
viewModel.showNavigation = false
ft.addToBackStack(null)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
ft.commit()
}
一切似乎都很好——但对于一个片段,在onCreateView方法中,我调用了以下方法:
override fun requestPermissions(permissions: Array<String>, requestCode: Int) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.requestPermissions(permissions, requestCode)
}
我的问题是-是否有人知道这种行为的原因,以及是否有更好的方法来规避它?我的解决方案是按照@Yolo最初的问题注释中的建议,在
xml
文件中设置背景色
android:background="@android:color/white"
在我做了这个更改之后,当我切换到新的片段时,这个片段的片段不再挂起。为你的片段设置背景色layout@ysl尝试过之后,它没有工作-除了新的片段被添加到旧视图下面。我可以看看你的代码吗activity@ysl是的,我把它贴到了pastebin,可以在这里找到:无论哪一个是您的主片段,即在您的主要活动启动时可见的片段,都应该添加。然后所有其他片段都应该添加。替换
android:background="@android:color/white"