刷新一个片段android

jat*_*ana 6 android android-fragments

早些时候这段代码可以工作,但现在它突然停止工作。片段没有脱离父活动。

public void reLoadFragment(Fragment fragment)
{
    Log.i(LogGeneratorHelper.INFO_TAG, "reloading fragment");
    // Reload current fragment
    Fragment frg = null;
    frg = getSupportFragmentManager().findFragmentByTag(fragment.getClass().getName());
    frg.onDetach();
    final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.detach(frg);
    ft.attach(frg);
    ft.commit();
    Log.i(LogGeneratorHelper.INFO_TAG, "reloading fragment finish");
}
Run Code Online (Sandbox Code Playgroud)

jat*_*ana 7

ft.detach()支持库更新 25.1.0 后不工作。该解决方案在更新后工作正常:

getSupportFragmentManager().beginTransaction().detach(oldFragment).commitNowAllowingStateLoss();
getSupportFragmentManager().beginTransaction().attach(oldFragment).commitAllowingStateLoss(); 
Run Code Online (Sandbox Code Playgroud)

图片来源: 刷新或强制重绘片段


Cat*_*ira 2

在您的主要活动中使用它:

frag_name frag_name = new frag_name();
                    FragmentManager manager = this.getSupportFragmentManager();
                    manager.beginTransaction().replace(R.id.youtframelayout, frag_name, frag_name.getTag()).commit();
Run Code Online (Sandbox Code Playgroud)

它初始化fragment并替换你的FrameLayout

像这样你再次替换片段:)

希望它有效!:)