Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9aa0a8e1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents f5d86287 153acbcf
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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) {
+2 −4
Original line number Diff line number Diff line
@@ -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();
        }