Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 替换片段后,旧片段中的视图仍保留在内容视图中_Android_Android Fragments_Android Permissions - Fatal编程技术网

Android 替换片段后,旧片段中的视图仍保留在内容视图中

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)

我遇到了一个特殊的bug:在我的应用程序中,我有一个底部导航栏,它使用以下代码替换FrameLayout视图中的片段:

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"