美文网首页
Fragment页面下来回切换暗色模式/语言/显示大小 等出现闪

Fragment页面下来回切换暗色模式/语言/显示大小 等出现闪

作者: 沙漠里de小孩子 | 来源:发表于2020-03-12 21:42 被阅读0次

    一个activity页面使用Fragment,Fragment中有ListPreference,点击ListPreference 会弹出弹窗。在有弹窗的时候,切换暗色模式,再切换回来,必现页面红屏闪退。

    问题的原因在于:

    像切换夜间模式、切换语言、显示大小等等,需要修改资源的,activity会销毁重启,使用下面的代码时,每次都会新建一个fragment,导致两次切换之后,activity无法attach到fragment。

    private void addFragment() {

            getSupportFragmentManager()

                    .beginTransaction()

    .replace(R.id.optimization_scanned_result, newMyPreferenceFragment())

                    .commit();

    使用下面的方法可以规避这个问题:

    private void addFragment() {

    if (getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG) == null) {

    mFragment = new SecureSettingsFragment();

        } else {

    mFragment = getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG);

        }

    if (mFragment == null) {

    return;

        }

    if (mFragment != null) {

    getSupportFragmentManager()

    .beginTransaction()

    .replace(R.id.settings_content, mFragment, FRAGMENT_TAG)

    .commit();

        }

    }

    通过TAG去获取原来的fragment,获取不到再新建。

    相关文章

      网友评论

          本文标题:Fragment页面下来回切换暗色模式/语言/显示大小 等出现闪

          本文链接:https://www.haomeiwen.com/subject/pzfgjhtx.html