summaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorClark Scheff <clark@cyngn.com>2014-07-18 17:11:39 -0700
committerClark Scheff <clark@cyngn.com>2014-07-18 19:45:13 -0700
commit19bc820a359babbe7919971ee0a8622b6ba8ab72 (patch)
tree146b634a83084a79e268df3aba8ec2ddcc0b8e2c /src/org
parentd9bb96a6aff24a7ec5ac355ec8ab17caf5dbfea0 (diff)
downloadpackages_apps_ThemeChooser-19bc820a359babbe7919971ee0a8622b6ba8ab72.zip
packages_apps_ThemeChooser-19bc820a359babbe7919971ee0a8622b6ba8ab72.tar.gz
packages_apps_ThemeChooser-19bc820a359babbe7919971ee0a8622b6ba8ab72.tar.bz2
Extend FragmentStatePagerAdapter for ThemesAdapter
Change-Id: I29c49156f02bfb38eb4b614e4ca5df3bf8bc5193
Diffstat (limited to 'src/org')
-rw-r--r--src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java37
-rw-r--r--src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java1
2 files changed, 14 insertions, 24 deletions
diff --git a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
index 85bbff0..f5830c8 100644
--- a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
+++ b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
@@ -26,7 +26,7 @@ import android.provider.ThemesContract;
import android.provider.ThemesContract.ThemesColumns;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentPagerAdapter;
+import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
@@ -56,6 +56,8 @@ public class ChooserActivity extends FragmentActivity
private static final long SLIDE_CONTENT_ANIM_DURATION = 300L;
private static final long MOVE_TO_MY_THEME_DELAY = 750L;
+ private static final int OFFSCREEN_PAGE_LIMIT = 3;
+
private PagerContainer mContainer;
private ThemeViewPager mPager;
private Button mEdit;
@@ -82,7 +84,7 @@ public class ChooserActivity extends FragmentActivity
DisplayMetrics dm = getResources().getDisplayMetrics();
int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, dm);
mPager.setPageMargin(-margin / 2);
- mPager.setOffscreenPageLimit(3);
+ mPager.setOffscreenPageLimit(OFFSCREEN_PAGE_LIMIT);
mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageSelected(int position) {
@@ -165,10 +167,12 @@ public class ChooserActivity extends FragmentActivity
*/
public void themeChangeEnded() {
if (mPager.getCurrentItem() != 0) {
- // Clear the "My theme" card so it loads the newly applied changes
- ThemeFragment f = (ThemeFragment) getSupportFragmentManager()
- .findFragmentByTag(getFragmentTag(0));
- if (f != null) f.clearChanges();
+ ThemeFragment f;
+ if (mPager.getCurrentItem() <= OFFSCREEN_PAGE_LIMIT) {
+ // Clear the "My theme" card so it loads the newly applied changes
+ f = (ThemeFragment) mAdapter.instantiateItem(mPager, 0);
+ if (f != null) f.clearChanges();
+ }
// clear the current card so it returns to it's previous state
f = getCurrentFragment();
@@ -310,13 +314,9 @@ public class ChooserActivity extends FragmentActivity
};
private ThemeFragment getCurrentFragment() {
- ThemeFragment f = (ThemeFragment) getSupportFragmentManager()
- .findFragmentByTag(getFragmentTag(mPager.getCurrentItem()));
- return f;
- }
-
- private String getFragmentTag(int pos){
- return "android:switcher:"+R.id.viewpager+":"+pos;
+ // instantiateItem will return the fragment if it already exists and not instantiate it,
+ // which should be the case for the current fragment.
+ return (ThemeFragment) mAdapter.instantiateItem(mPager, mPager.getCurrentItem());
}
@Override
@@ -358,7 +358,7 @@ public class ChooserActivity extends FragmentActivity
}
- public class ThemesAdapter extends FragmentPagerAdapter {
+ public class ThemesAdapter extends FragmentStatePagerAdapter {
private Cursor mCursor;
private Context mContext;
@@ -389,15 +389,6 @@ public class ChooserActivity extends FragmentActivity
return mCursor == null ? 1 : mCursor.getCount() + 1;
}
- public String getItemPkgName(int position) {
- if (position == 0) {
- return ThemeFragment.CURRENTLY_APPLIED_THEME;
- }
- mCursor.moveToPosition(position - 1);
- int pkgIdx = mCursor.getColumnIndex(ThemesContract.ThemesColumns.PKG_NAME);
- return mCursor.getString(pkgIdx);
- }
-
public void swapCursor(Cursor c) {
mCursor = c;
}
diff --git a/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java b/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java
index c5c00e8..2c1aaec 100644
--- a/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java
+++ b/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java
@@ -46,7 +46,6 @@ import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.util.SparseArray;
-import android.util.TypedValue;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;