Merge "Use id directly when extensions change fragments" into oc-dr1-dev

This commit is contained in:
TreeHugger Robot
2017-06-22 16:25:48 +00:00
committed by Android (Google) Code Review
2 changed files with 5 additions and 5 deletions

View File

@@ -34,12 +34,14 @@ public class ExtensionFragmentListener<T extends FragmentBase> implements Consum
private final FragmentHostManager mFragmentHostManager;
private final String mTag;
private final Extension<T> mExtension;
private final int mId;
private String mOldClass;
private ExtensionFragmentListener(View view, String tag, int id, Extension<T> extension) {
mTag = tag;
mFragmentHostManager = FragmentHostManager.get(view);
mExtension = extension;
mId = id;
mFragmentHostManager.getFragmentManager().beginTransaction()
.replace(id, (Fragment) mExtension.get(), mTag)
.commit();
@@ -49,7 +51,7 @@ public class ExtensionFragmentListener<T extends FragmentBase> implements Consum
public void accept(T extension) {
try {
Fragment.class.cast(extension);
mFragmentHostManager.getExtensionManager().setCurrentExtension(mTag,
mFragmentHostManager.getExtensionManager().setCurrentExtension(mId, mTag,
mOldClass, extension.getClass().getName(), mExtension.getContext());
mOldClass = extension.getClass().getName();
} catch (ClassCastException e) {

View File

@@ -266,16 +266,14 @@ public class FragmentHostManager {
class ExtensionFragmentManager {
private final ArrayMap<String, Context> mExtensionLookup = new ArrayMap<>();
public void setCurrentExtension(@NonNull String tag, @Nullable String oldClass,
public void setCurrentExtension(int id, @NonNull String tag, @Nullable String oldClass,
@NonNull String currentClass, @Nullable Context context) {
Fragment fragment = getFragmentManager().findFragmentByTag(tag);
if (oldClass != null) {
mExtensionLookup.remove(oldClass);
}
mExtensionLookup.put(currentClass, context);
getFragmentManager().beginTransaction()
.replace(((View) fragment.getView().getParent()).getId(),
instantiate(context, currentClass, null), tag)
.replace(id, instantiate(context, currentClass, null), tag)
.commit();
reloadFragments();
}