1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| public class MyPagerAdapter extends FragmentStatePagerAdapter {
private final List fragments;
private final String path;
private static final String TAG = "FragmentPagerAdapter";
private static final boolean DEBUG = true;
private final FragmentManager mFragmentManager;
private FragmentTransaction mCurTransaction = null;
private Fragment mCurrentPrimaryItem = null;
private Context mContext = null;
//On fournit à l'adapter la liste des fragments à afficher
public MyPagerAdapter(FragmentManager fm, List fragments, String path, Context context) {
super(fm);
mContext = context;
mFragmentManager = fm;
this.path = path;
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
Fragment frg;
Bundle data;
switch(position){
case 0 :
data = new Bundle();
data.putString("path", path);
frg = new fragment1();
frg.setArguments(data);
return frg;
case 1 :
data = new Bundle();
data.putString("path",path);
frg = new fragment2();
frg.setArguments(data);
return frg;
case 2 :
data = new Bundle();
data.putString("path",path);
frg = new fragment3();
frg.setArguments(data);
return frg;
case 3 :
data = new Bundle();
data.putString("path",path);
frg = new fragment4();
frg.setArguments(data);
return frg;
case 4 :
data = new Bundle();
data.putString("path",path);
frg = new fragment5();
frg.setArguments(data);
return frg;
}
return null;
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
Fragment fragment = (Fragment)object;
if (fragment != mCurrentPrimaryItem) {
if (mCurrentPrimaryItem != null) {
mCurrentPrimaryItem.setMenuVisibility(false);
}
if (fragment != null) {
fragment.setMenuVisibility(true);
}
mCurrentPrimaryItem = fragment;
}
}
@Override
public Object instantiateItem(ViewGroup container, int position){
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
// Do we already have this fragment?
String name = makeFragmentName(container.getId(), position);
Fragment fragment = mFragmentManager.findFragmentByTag(name);
if (fragment != null) {
if (DEBUG) Log.e(TAG, "Attaching item #" + position + ": f=" + fragment + "name :" +name);
mCurTransaction.attach(fragment);
} else {
fragment = getItem(position);
if (DEBUG) Log.e(TAG, "Adding item #" + position + ": f=" + fragment +"name :" +name);
mCurTransaction.add(container.getId(), fragment,
makeFragmentName(container.getId(), position));
}
if (fragment != mCurrentPrimaryItem) {
fragment.setMenuVisibility(false);
}
return fragment;
}
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public int getCount() {
return 5;
}
public CharSequence getPageTitle(int position, Context context) {
String[] name_activity = context.getResources().getStringArray(R.array.SubMenu);
return name_activity[position];
}
@Override
public void finishUpdate(ViewGroup container) {
if (mCurTransaction != null) {
mCurTransaction.commitAllowingStateLoss();
mCurTransaction = null;
mFragmentManager.executePendingTransactions();
}
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
if (DEBUG) Log.e(TAG, "Detaching item #" + position + ": f=" + object + " v=" + ((Fragment) object).getView());
mCurTransaction.remove((Fragment) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return ((Fragment)object).getView() == view;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
public void startUpdate(ViewGroup container) {
}
private static String makeFragmentName(int viewId, int index) {
return "android:switcher:" + viewId + ":" + index;
}
} |