コード例 #1
0
  /**
   * 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);
  }
コード例 #2
0
 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();
 }
コード例 #3
0
 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);
 }
コード例 #4
0
ファイル: SearchFragment.java プロジェクト: Hn1993/huntorScrm
 @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;
   }
 }
コード例 #5
0
  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();
    }
  }
コード例 #6
0
 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);
         }
       }
     }
   }
 }
コード例 #7
0
 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;
 }
コード例 #8
0
 public void finishUpdate(ViewGroup paramViewGroup) {
   if (mCurTransaction != null) {
     mCurTransaction.commitAllowingStateLoss();
     mCurTransaction = null;
     mFragmentManager.executePendingTransactions();
   }
 }
コード例 #9
0
 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;
 }
コード例 #10
0
  @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);
        }
      }
    }
  }
コード例 #11
0
 @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;
 }
コード例 #12
0
  @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();
    }
  }
コード例 #13
0
 @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);
 }
コード例 #14
0
  @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;
  }
コード例 #15
0
 @Override
 public void show(FragmentManager manager, String tag) {
   if (manager.findFragmentByTag(tag) == null) {
     super.show(manager, tag);
   }
 }