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

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

Merge "Fix InstantiationException on fragment"

parents 54fca282 d5405cf4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -113,7 +113,7 @@ public class ProxySelector extends InstrumentedFragment implements DialogCreatab
        if (mDialogFragment != null) {
            Log.e(TAG, "Old dialog fragment not null!");
        }
        mDialogFragment = new SettingsDialogFragment(this, dialogId);
        mDialogFragment = SettingsDialogFragment.newInstance(this, dialogId);
        mDialogFragment.show(getActivity().getSupportFragmentManager(), Integer.toString(dialogId));
    }

+19 −7
Original line number Diff line number Diff line
@@ -454,7 +454,7 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
        if (mDialogFragment != null) {
            Log.e(TAG, "Old dialog fragment not null!");
        }
        mDialogFragment = new SettingsDialogFragment(this, dialogId);
        mDialogFragment = SettingsDialogFragment.newInstance(this, dialogId);
        mDialogFragment.show(getChildFragmentManager(), Integer.toString(dialogId));
    }

@@ -541,22 +541,26 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
        private DialogInterface.OnCancelListener mOnCancelListener;
        private DialogInterface.OnDismissListener mOnDismissListener;

        public SettingsDialogFragment(DialogCreatable fragment, int dialogId) {
            super(fragment, dialogId);
        public static SettingsDialogFragment newInstance(DialogCreatable fragment, int dialogId) {
            if (!(fragment instanceof Fragment)) {
                throw new IllegalArgumentException("fragment argument must be an instance of "
                        + Fragment.class.getName());
            }
            mParentFragment = (Fragment) fragment;
        }

            final SettingsDialogFragment settingsDialogFragment = new SettingsDialogFragment();
            settingsDialogFragment.setParentFragment(fragment);
            settingsDialogFragment.setDialogId(dialogId);

            return settingsDialogFragment;
        }

        @Override
        public int getMetricsCategory() {
            if (mDialogCreatable == null) {
            if (mParentFragment == null) {
                return Instrumentable.METRICS_CATEGORY_UNKNOWN;
            }
            final int metricsCategory = mDialogCreatable.getDialogMetricsCategory(mDialogId);
            final int metricsCategory =
                    ((DialogCreatable) mParentFragment).getDialogMetricsCategory(mDialogId);
            if (metricsCategory <= 0) {
                throw new IllegalStateException("Dialog must provide a metrics category");
            }
@@ -639,6 +643,14 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF
                }
            }
        }

        private void setParentFragment(DialogCreatable fragment) {
            mParentFragment = (Fragment) fragment;
        }

        private void setDialogId(int dialogId) {
            mDialogId = dialogId;
        }
    }

    protected boolean hasNextButton() {
+4 −4
Original line number Diff line number Diff line
@@ -51,8 +51,8 @@ public class SettingsDialogFragmentTest {
    public void testGetMetrics_shouldGetMetricFromDialogCreatable() {
        when(mDialogCreatable.getDialogMetricsCategory(DIALOG_ID)).thenReturn(1);

        mDialogFragment =
                new SettingsPreferenceFragment.SettingsDialogFragment(mDialogCreatable, DIALOG_ID);
        mDialogFragment = SettingsPreferenceFragment.SettingsDialogFragment.newInstance(
                mDialogCreatable, DIALOG_ID);
        mDialogFragment.onAttach(RuntimeEnvironment.application);
        mDialogFragment.getMetricsCategory();

@@ -65,8 +65,8 @@ public class SettingsDialogFragmentTest {
        when(mDialogCreatable.getDialogMetricsCategory(DIALOG_ID)).thenReturn(-1);

        try {
            mDialogFragment =
                new SettingsPreferenceFragment.SettingsDialogFragment(mDialogCreatable, DIALOG_ID);
            mDialogFragment = SettingsPreferenceFragment.SettingsDialogFragment.newInstance(
                    mDialogCreatable, DIALOG_ID);
            mDialogFragment.onAttach(RuntimeEnvironment.application);
            fail("Should fail with IllegalStateException");
        } catch (IllegalStateException e) {