@Override public void onThemeSelected(String themeId) { FragmentManager fm = getSupportFragmentManager(); if (!Utils.isXLarge(ThemeBrowserActivity.this)) { // show details as a fragment on top FragmentTransaction ft = fm.beginTransaction(); if (mSearchFragment != null && mSearchFragment.isVisible()) { fm.popBackStack(); } setupBaseLayout(); mDetailsFragment = ThemeDetailsFragment.newInstance(themeId); ft.add(R.id.theme_browser_container, mDetailsFragment, ThemeDetailsFragment.TAG); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.addToBackStack(null); ft.commit(); } else { // show details as a dialog mDetailsFragment = ThemeDetailsFragment.newInstance(themeId); mDetailsFragment.show(getSupportFragmentManager(), ThemeDetailsFragment.TAG); getSupportFragmentManager().executePendingTransactions(); int minWidth = getResources().getDimensionPixelSize(R.dimen.theme_details_dialog_min_width); int height = getResources().getDimensionPixelSize(R.dimen.theme_details_dialog_height); int width = Math.max((int) (DisplayUtils.getDisplayPixelWidth(this) * 0.6), minWidth); mDetailsFragment.getDialog().getWindow().setLayout(width, height); } }
@Override protected void onSaveInstanceState(Bundle outState) { if (Utils.isXLarge(ThemeBrowserActivity.this) && mDetailsFragment != null) { mDetailsFragment.dismiss(); } super.onSaveInstanceState(outState); outState.putBoolean(KEY_IS_ACTIVATING_THEME, mIsActivatingTheme); }
@Override public void onLivePreviewClicked(String themeId, String previewURL) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); if (mPreviewFragment == null) { mPreviewFragment = ThemePreviewFragment.newInstance(themeId, previewURL); } else { mPreviewFragment.load(themeId, previewURL); } if (mDetailsFragment != null) { if (Utils.isXLarge(ThemeBrowserActivity.this)) { mDetailsFragment.dismiss(); } else { ft.hide(mDetailsFragment); } } ft.add(R.id.theme_browser_container, mPreviewFragment, ThemePreviewFragment.TAG); ft.addToBackStack(null); ft.commit(); setupBaseLayout(); }
@Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (savedInstanceState.getBoolean(KEY_IS_ACTIVATING_THEME) && mDetailsFragment != null) mDetailsFragment.setIsActivatingTheme(true); }