/** * Asynchronously show the route chooser dialog. This will attach a {@link DialogFragment} to the * containing Activity. */ public void showDialog() { final FragmentManager fm = getActivity().getFragmentManager(); if (mDialogFragment == null) { // See if one is already attached to this activity. mDialogFragment = (MediaRouteChooserDialogFragment) fm.findFragmentByTag(MediaRouteChooserDialogFragment.FRAGMENT_TAG); } if (mDialogFragment != null) { Log.w(TAG, "showDialog(): Already showing!"); return; } mDialogFragment = new MediaRouteChooserDialogFragment(); mDialogFragment.setExtendedSettingsClickListener(mExtendedSettingsClickListener); mDialogFragment.setLauncherListener( new MediaRouteChooserDialogFragment.LauncherListener() { @Override public void onDetached(MediaRouteChooserDialogFragment detachedFragment) { mDialogFragment = null; } }); mDialogFragment.setRouteTypes(mRouteTypes); mDialogFragment.show(fm, MediaRouteChooserDialogFragment.FRAGMENT_TAG); }
public void onDecorButtonClick(View view) { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); DecoratorFragment decoratorFragment = new DecoratorFragment(); ft.replace(R.id.patternsMainFrame, decoratorFragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null); // ft.show(fm.findFragmentById(R.id.decoratorFragment)); ft.commit(); }
public void destroyItem(ViewGroup paramViewGroup, int paramInt, Object paramObject) { paramViewGroup = (Fragment) paramObject; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } while (mSavedState.size() <= paramInt) { mSavedState.add(null); } mSavedState.set(paramInt, mFragmentManager.saveFragmentInstanceState(paramViewGroup)); mFragments.set(paramInt, null); mCurTransaction.remove(paramViewGroup); }
@Override public void onClick(View v) { FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); int id = v.getId(); switch (id) { case R.id.img_left_corner: toggleInput(); manager.popBackStack(); transaction.remove(this); transaction.commit(); break; } }
public void testGetBuoysTask() throws Exception { FragmentManager fm = getActivity().getSupportFragmentManager(); gmap = ((SupportMapFragment) fm.findFragmentById(com.blindmatchrace.R.id.map)).getMap(); buoyRadiuses = new Circle[C.MAX_BUOYS]; GetBuoysTask getBuoys = new GetBuoysTask("GetBuoysTask", gmap, buoyRadiuses, "1234"); getBuoys.execute(C.URL_CLIENTS_TABLE); if (getBuoys.getException() != null) { throw getBuoys.getException(); } }
public void restoreState(Parcelable paramParcelable, ClassLoader paramClassLoader) { if (paramParcelable != null) { paramParcelable = (Bundle) paramParcelable; paramParcelable.setClassLoader(paramClassLoader); paramClassLoader = paramParcelable.getParcelableArray("states"); mSavedState.clear(); mFragments.clear(); int i; if (paramClassLoader != null) { i = 0; while (i < paramClassLoader.length) { mSavedState.add((Fragment.SavedState) paramClassLoader[i]); i += 1; } } paramClassLoader = paramParcelable.keySet().iterator(); while (paramClassLoader.hasNext()) { String str = (String) paramClassLoader.next(); if (str.startsWith("f")) { i = Integer.parseInt(str.substring(1)); Fragment localFragment = mFragmentManager.getFragment(paramParcelable, str); if (localFragment != null) { while (mFragments.size() <= i) { mFragments.add(null); } localFragment.setMenuVisibility(false); mFragments.set(i, localFragment); } else { Log.w("FragmentStatePagerAdapter", "Bad fragment at key " + str); } } } } }
public Object instantiateItem(ViewGroup paramViewGroup, int paramInt) { if (mFragments.size() > paramInt) { localFragment = (Fragment) mFragments.get(paramInt); if (localFragment != null) { return localFragment; } } if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } Fragment localFragment = getItem(paramInt); if (mSavedState.size() > paramInt) { Fragment.SavedState localSavedState = (Fragment.SavedState) mSavedState.get(paramInt); if (localSavedState != null) { localFragment.setInitialSavedState(localSavedState); } } while (mFragments.size() <= paramInt) { mFragments.add(null); } localFragment.setMenuVisibility(false); localFragment.setUserVisibleHint(false); mFragments.set(paramInt, localFragment); mCurTransaction.add(paramViewGroup.getId(), localFragment); return localFragment; }
public void finishUpdate(ViewGroup paramViewGroup) { if (mCurTransaction != null) { mCurTransaction.commitAllowingStateLoss(); mCurTransaction = null; mFragmentManager.executePendingTransactions(); } }
public Parcelable saveState() { Object localObject1 = null; Object localObject2; if (mSavedState.size() > 0) { localObject1 = new Bundle(); localObject2 = new Fragment.SavedState[mSavedState.size()]; mSavedState.toArray((Object[]) localObject2); ((Bundle) localObject1).putParcelableArray("states", (Parcelable[]) localObject2); } int i = 0; while (i < mFragments.size()) { Fragment localFragment = (Fragment) mFragments.get(i); localObject2 = localObject1; if (localFragment != null) { localObject2 = localObject1; if (localObject1 == null) { localObject2 = new Bundle(); } localObject1 = "f" + i; mFragmentManager.putFragment((Bundle) localObject2, (String) localObject1, localFragment); } i += 1; localObject1 = localObject2; } return (Parcelable) localObject1; }
@Override public void finishUpdate(ViewGroup container) { if (mCurTransaction != null) { mCurTransaction.commitAllowingStateLoss(); mCurTransaction = null; mFragmentManager.executePendingTransactions(); for (Fragment fragment : mFragments) { if (fragment != null) { /* if (fragment.isAdded() && !fragment.isResumed()) { // Fix sdk 23.0.1 : Fragment isAdded, but didn't resumed. if (FragmentUtils.isStateLoss(fragment.getFragmentManager())) { continue; } // Test move to fixActiveFragment(mFragmentManager, fragment); // fragment.getFragmentManager().beginTransaction().detach(fragment).attach(fragment).commit(); } */ if (FragmentUtils.isStateLoss(fragment.getFragmentManager())) { continue; } // Fix sdk 22.0.1 : Fragment is added by transaction. BUT didn't add to FragmentManager's // mActive. If you Rotation. fixActiveFragment(mFragmentManager, fragment); } } } }
@Override public Object instantiateItem(ViewGroup container, int position) { Fragment fragment; // If we already have this item instantiated, there is nothing // to do. This can happen when we are restoring the entire pager // from its saved state, where the fragment manager has already // taken care of restoring the fragments we previously had instantiated. fragment = mFragments.get(position); if (fragment != null) { return fragment; } if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } FragmentState fs = mFragmentStates.get(position); if (fs != null) { FragmentManager fragmentManager = getFragmentActivity().getSupportFragmentManager(); if (getParentFragment() != null) { fragmentManager = getParentFragment().getChildFragmentManager(); } // Fix Can't change tag of fragment Error // http://stackoverflow.com/questions/24355838/cant-change-tag-of-fragment-error-trying-to-use-a-pageradapter-for-switching if ((fs.mTag != null && fs.mTag.equals(mFragmentTags.get(position))) || (fs.mTag == null && mFragmentTags.get(position) == null)) { fragment = fs.instantiate( FragmentUtils.getFragmentHostCallback(fragmentManager), getParentFragment(), FragmentUtils.getFragmentManagerNonConfig(fragmentManager)); // Fix bug // http://stackoverflow.com/questions/11381470/classnotfoundexception-when-unmarshalling-android-support-v4-view-viewpagersav if (fragment.mSavedFragmentState != null) { fragment.mSavedFragmentState.setClassLoader(fragment.getClass().getClassLoader()); } } else { Log.e( TAG, String.format( "Fragment tag isn't equal! Origin: %s %s", fs.mTag, mFragmentTags.get(position))); mFragmentStates.set(position, null); } } if (fragment == null) { fragment = Fragment.instantiate( getFragmentActivity(), mFragmentClassNames.get(position), mFragmentArgs.get(position)); } if (DEBUG) { Log.v(TAG, "Adding item #" + position + ": f=" + fragment); } fragment.setMenuVisibility(false); fragment.setUserVisibleHint(false); mFragments.set(position, fragment); mFragmentStates.set(position, null); mCurTransaction.add(container.getId(), fragment, mFragmentTags.get(position)); return fragment; }
@Override public void restoreState(Parcelable state, ClassLoader loader) { if (state != null) { Bundle bundle = (Bundle) state; bundle.setClassLoader(loader); ArrayList<FragmentState> fs = bundle.getParcelableArrayList("states_fragment"); ArrayList<Bundle> args = bundle.getParcelableArrayList("arg_fragment"); ArrayList<String> tags = bundle.getStringArrayList("tag_fragment"); ArrayList<String> classNames = bundle.getStringArrayList("classname_fragment"); mFragments.clear(); mFragmentStates.clear(); mFragmentTags.clear(); mFragmentClassNames.clear(); mFragmentArgs.clear(); if (fs != null) { for (int i = 0; i < fs.size(); i++) { FragmentState fragmentState = fs.get(i); mFragmentStates.add(fragmentState); if (fragmentState != null) { mFragmentArgs.add(fragmentState.mArguments); mFragmentTags.add(fragmentState.mTag); mFragmentClassNames.add(fragmentState.mClassName); } else { mFragmentArgs.add(args.get(i)); mFragmentTags.add(tags.get(i)); mFragmentClassNames.add(classNames.get(i)); } mFragments.add(null); } } Iterable<String> keys = bundle.keySet(); for (String key : keys) { if (key.startsWith("f")) { int index = Integer.parseInt(key.substring(1)); Fragment f = null; try { f = mFragmentManager.getFragment(bundle, key); } catch (Throwable ex) { ex.printStackTrace(); } if (f != null) { f.setMenuVisibility(false); mFragments.set(index, f); mFragmentArgs.set(index, f.mArguments); mFragmentTags.set(index, f.mTag); mFragmentClassNames.set(index, f.getClass().getName()); } else { Log.w(TAG, "Bad fragment at key " + key); } } } // If restore will change notifyDataSetChanged(); } }
@Override public void destroyItem(ViewGroup container, int position, Object object) { Fragment fragment = (Fragment) object; if (mCurTransaction == null) { mCurTransaction = mFragmentManager.beginTransaction(); } if (DEBUG) { Log.v( TAG, "Removing item #" + position + ": f=" + object + " v=" + ((Fragment) object).getView()); } if (position < getCount() && fragment.mIndex >= 0) { FragmentState fragmentState = new FragmentState(fragment); Fragment.SavedState savedState = mFragmentManager.saveFragmentInstanceState(fragment); if (savedState != null) { fragmentState.mSavedFragmentState = savedState.mState; } mFragmentStates.set(position, fragmentState); mFragments.set(position, null); } mCurTransaction.remove(fragment); }
@Override public Parcelable saveState() { Bundle state = null; // 目前顯示的 Fragments for (int i = 0; i < mFragments.size(); i++) { Fragment f = mFragments.get(i); if (f != null && f.isAdded()) { if (state == null) { state = new Bundle(); } String key = "f" + i; mFragmentManager.putFragment(state, key, f); } } if (mFragmentStates.size() > 0) { if (state == null) { state = new Bundle(); } // Create new instance for some reason ArrayList<FragmentState> fs = new ArrayList<>(); fs.addAll(mFragmentStates); state.putParcelableArrayList("states_fragment", fs); ArrayList<Bundle> args = new ArrayList<>(); args.addAll(mFragmentArgs); state.putParcelableArrayList("arg_fragment", args); ArrayList<String> tagArray = new ArrayList<>(); tagArray.addAll(mFragmentTags); state.putStringArrayList("tag_fragment", tagArray); ArrayList<String> classNameArray = new ArrayList<>(); classNameArray.addAll(mFragmentClassNames); state.putStringArrayList("classname_fragment", classNameArray); } return state; }
@Override public void show(FragmentManager manager, String tag) { if (manager.findFragmentByTag(tag) == null) { super.show(manager, tag); } }