如何更新片段列表中的旧片段?
How to update the old fragment in the Fragment list?
我需要更新片段列表中的旧片段,所以我需要清除所有旧样式。
getSupportFragmentManager().beginTransaction().add()
方法可以将片段添加到列表中,但是如何一次性清除所有片段?
添加
android.support.v4.app.Fragment fragment = getSupportFragmentManager()
.findFragmentByTag(tag);
if (fragment == null) {
Log.d("Main",tag+"fragment == null");
fragment = new FragmentFactory().getFragment(tag);
getSupportFragmentManager().beginTransaction().hide(currentFragment)
.add(R.id.content_frame, fragment, tag).commit();
currentFragment = fragment;
} else if (fragment.isHidden()) {
Log.d("Main",tag+"fragment.isHidden()");
getSupportFragmentManager().beginTransaction()
.hide(currentFragment).show(fragment).commit();
currentFragment = fragment;
}
作为答案
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
它仍然存在错误,当第二轮 if 语句进入 else 时。但是作为目的fragment应该清除。 if 语句需要去 if 分支和 add 新片段。
如何解决?
试试这个:
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
我需要更新片段列表中的旧片段,所以我需要清除所有旧样式。
getSupportFragmentManager().beginTransaction().add()
方法可以将片段添加到列表中,但是如何一次性清除所有片段?
添加
android.support.v4.app.Fragment fragment = getSupportFragmentManager()
.findFragmentByTag(tag);
if (fragment == null) {
Log.d("Main",tag+"fragment == null");
fragment = new FragmentFactory().getFragment(tag);
getSupportFragmentManager().beginTransaction().hide(currentFragment)
.add(R.id.content_frame, fragment, tag).commit();
currentFragment = fragment;
} else if (fragment.isHidden()) {
Log.d("Main",tag+"fragment.isHidden()");
getSupportFragmentManager().beginTransaction()
.hide(currentFragment).show(fragment).commit();
currentFragment = fragment;
}
作为答案
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
它仍然存在错误,当第二轮 if 语句进入 else 时。但是作为目的fragment应该清除。 if 语句需要去 if 分支和 add 新片段。 如何解决?
试试这个:
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);