下面列出了android.support.v4.app.FragmentManager#findFragmentByTag ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void showLanguageChooser(@NonNull FragmentManager fm) {
FragmentTransaction ft = fm.beginTransaction();
Fragment prev = fm.findFragmentByTag(TAG);
if (prev != null) {
ft.remove(prev);
}
ft.add(newInstance(), TAG)
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
try {
ft.commit();
} catch (IllegalStateException e) {
ft.commitAllowingStateLoss();
}
}
/**
* Get instance of RxSmartLockPasswordsFragment
*
* @return a RxSmartLockPasswordsFragment
*/
private RxSmartLockPasswordsFragment getRxFacebookAuthFragment(Builder builder) {
FragmentManager fragmentManager = mActivity.getSupportFragmentManager();
// prevent fragment manager already executing transaction
int stackCount = fragmentManager.getBackStackEntryCount();
if( fragmentManager.getFragments() != null )
fragmentManager = fragmentManager.getFragments().get( stackCount > 0 ? stackCount-1 : stackCount ).getChildFragmentManager();
RxSmartLockPasswordsFragment rxSmartLockPasswordsFragment = (RxSmartLockPasswordsFragment)
fragmentManager.findFragmentByTag(RxSmartLockPasswordsFragment.TAG);
if (rxSmartLockPasswordsFragment == null) {
rxSmartLockPasswordsFragment = RxSmartLockPasswordsFragment.newInstance(builder);
fragmentManager
.beginTransaction()
.add(rxSmartLockPasswordsFragment, RxSmartLockPasswordsFragment.TAG)
.commit();
fragmentManager.executePendingTransactions();
}
return rxSmartLockPasswordsFragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
MyLog.entry();
final View view = inflater.inflate(R.layout.switch_listener_fragment, container, false);
ButterKnife.inject(this, view);
final FragmentManager fm = getFragmentManager();
mTaskFragment = (SwitchListenerTaskFragment) fm.findFragmentByTag(TAG_TASK_FRAGMENT);
if (mTaskFragment == null) {
mTaskFragment = new SwitchListenerTaskFragment();
fm.beginTransaction().add(mTaskFragment, TAG_TASK_FRAGMENT).commit();
}
mTaskFragment.registerCallbacks(mCallbacks);
MyLog.exit();
return view;
}
protected void initContentFragment(Bundle savedInstanceState) {
FragmentManager fragmentManager = getSupportFragmentManager();
if (savedInstanceState == null) {
contentFragment = createContentFragment();
if (contentFragment.getArguments() == null) {
contentFragment.setArguments(getIntent().getExtras());
}
// SHOULD BE TRANSIT_NONE
fragmentManager.beginTransaction()
.setTransition(TRANSITION_INIT_FRAGMENT)
.add(fragmentContainerId(), contentFragment, TAG_CONTENT_FRAGMENT)
.commit();
} else {
//noinspection unchecked
contentFragment = (F) fragmentManager.findFragmentByTag(TAG_CONTENT_FRAGMENT);
}
}
public void displayDialog(BaseActivity activity, String tag) {
if (activity == null || !activity.isActive()) {
return;
}
FragmentManager fragmentManager = activity.getSupportFragmentManager();
if (fragmentManager == null || fragmentManager.isDestroyed()) {
return;
}
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment oldDialog = fragmentManager.findFragmentByTag(tag);
if (oldDialog != null) {
transaction.remove(oldDialog);
}
transaction.addToBackStack(null);
//fix for IllegalStateException: Can not perform this action after onSaveInstanceState
//http://stackoverflow.com/questions/15729138/on-showing-dialog-i-get-can-not-perform-this-action-after-onsaveinstancestate
if (!activity.isActive()) { //final safeguard in case activity was closed in the middle
return;
}
FragmentTransaction ft = fragmentManager.beginTransaction();
this.show(ft, tag);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_earthquake_main);
FragmentManager fm = getSupportFragmentManager();
// Android will automatically re-add any Fragments that
// have previously been added after a configuration change,
// so only add it if this isn't an automatic restart.
if (savedInstanceState == null) {
FragmentTransaction ft = fm.beginTransaction();
mEarthquakeListFragment = new EarthquakeListFragment();
ft.add(R.id.main_activity_frame,
mEarthquakeListFragment, TAG_LIST_FRAGMENT);
ft.commitNow();
} else {
mEarthquakeListFragment =
(EarthquakeListFragment) fm.findFragmentByTag(TAG_LIST_FRAGMENT);
}
// Retrieve the Earthquake View Model for this Activity.
earthquakeViewModel = ViewModelProviders.of(this)
.get(EarthquakeViewModel.class);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = getSupportFragmentManager();
BatchStepSensorFragment fragment =
(BatchStepSensorFragment) fm.findFragmentByTag(FRAGTAG);
if (fragment == null) {
FragmentTransaction transaction = fm.beginTransaction();
fragment = new BatchStepSensorFragment();
transaction.add(fragment, FRAGTAG);
transaction.commit();
}
// Use fragment as click listener for cards, but must implement correct interface
if (!(fragment instanceof OnCardClickListener)){
throw new ClassCastException("BatchStepSensorFragment must " +
"implement OnCardClickListener interface.");
}
OnCardClickListener clickListener = (OnCardClickListener) fm.findFragmentByTag(FRAGTAG);
mRetentionFragment = (StreamRetentionFragment) fm.findFragmentByTag(RETENTION_TAG);
if (mRetentionFragment == null) {
mRetentionFragment = new StreamRetentionFragment();
fm.beginTransaction().add(mRetentionFragment, RETENTION_TAG).commit();
} else {
// If the retention fragment already existed, we need to pull some state.
// pull state out
CardStreamState state = mRetentionFragment.getCardStream();
// dump it in CardStreamFragment.
mCardStreamFragment =
(CardStreamFragment) fm.findFragmentById(R.id.fragment_cardstream);
mCardStreamFragment.restoreState(state, clickListener);
}
}
public static void showOtherAppsDialog(@NonNull FragmentManager fm) {
FragmentTransaction ft = fm.beginTransaction();
Fragment prev = fm.findFragmentByTag(TAG);
if (prev != null) {
ft.remove(prev);
}
try {
DialogFragment dialog = OtherAppsFragment.newInstance();
dialog.show(ft, TAG);
} catch (IllegalStateException | IllegalArgumentException ignored) {}
}
public static ConnectingDialogFragment show(FragmentManager fm) {
try {
Fragment fragment = fm.findFragmentByTag(TAG);
if (fragment == null) {
ConnectingDialogFragment dialogFragment = new ConnectingDialogFragment();
dialogFragment.show(fm, TAG);
return dialogFragment;
}
return (ConnectingDialogFragment) fragment;
} catch (IllegalStateException e) {
// Catch 'Cannot perform this action after onSaveInstanceState'
}
return null;
}
@NonNull
private WaitForHasClick registerKeyboardIdlingResource() {
FragmentManager supportFragmentManager = activityTestRule.getActivity().getSupportFragmentManager();
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(ChatActivity.CHAT_ACTIVITY_FRAGMENT);
View viewById = fragmentByTag.getView().findViewById(R.id.attach);
WaitForHasClick waitForHasClick = new WaitForHasClick(viewById);
registerIdlingResources(waitForHasClick);
return waitForHasClick;
}
public static void startFragment(FragmentManager fm, Fragment fragment,int resId){
Fragment mFragment=fm.findFragmentByTag(fragment.getClass().getName());
FragmentTransaction ft=fm.beginTransaction();
if(mFragment==null){
ft.add(resId,fragment,fragment.getClass().getName());
}
ft.show(fragment);
ft.commitAllowingStateLoss();
}
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getSupportFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(AboutFragment.TAG);
if (fragment == null) {
super.onBackPressed();
} else {
onFragmentDetached(AboutFragment.TAG);
}
}
public void show(FragmentManager fragmentManager, String tag) {
FragmentTransaction transaction = fragmentManager.beginTransaction();
Fragment prevFragment = fragmentManager.findFragmentByTag(tag);
if (prevFragment != null) {
transaction.remove(prevFragment);
}
transaction.addToBackStack(null);
show(transaction, tag);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.aspect_ratio:
FragmentManager fragmentManager = getSupportFragmentManager();
if (mCameraView != null
&& fragmentManager.findFragmentByTag(FRAGMENT_DIALOG) == null) {
final Set<AspectRatio> ratios = mCameraView.getSupportedAspectRatios();
final AspectRatio currentRatio = mCameraView.getAspectRatio();
AspectRatioFragment.newInstance(ratios, currentRatio)
.show(fragmentManager, FRAGMENT_DIALOG);
}
return true;
case R.id.switch_flash:
if (mCameraView != null) {
mCurrentFlash = (mCurrentFlash + 1) % FLASH_OPTIONS.length;
item.setTitle(FLASH_TITLES[mCurrentFlash]);
item.setIcon(FLASH_ICONS[mCurrentFlash]);
mCameraView.setFlash(FLASH_OPTIONS[mCurrentFlash]);
}
return true;
case R.id.switch_camera:
if (mCameraView != null) {
int facing = mCameraView.getFacing();
mCameraView.setFacing(facing == CameraView.FACING_FRONT ?
CameraView.FACING_BACK : CameraView.FACING_FRONT);
}
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* Locate an existing instance of this Fragment or if not found, create and
* add it using FragmentManager.
*
* @param fm The FragmentManager manager to use.
* @return The existing instance of the Fragment or the new instance if just
* created.
*/
public static RetainFragment findOrCreateRetainFragment(FragmentManager fm) {
// Check to see if we have retained the worker fragment.
RetainFragment mRetainFragment = (RetainFragment) fm.findFragmentByTag(TAG);
// If not retained (or first time running), we need to create and add it.
if (mRetainFragment == null) {
mRetainFragment = new RetainFragment();
fm.beginTransaction().add(mRetainFragment, TAG).commitAllowingStateLoss();
}
return mRetainFragment;
}
private static MediaPickHelperFragment start(FragmentManager fm, Bundle args) {
MediaPickHelperFragment fragment = (MediaPickHelperFragment) fm.findFragmentByTag(TAG);
if (fragment == null) {
fragment = new MediaPickHelperFragment();
fm.beginTransaction().add(fragment, TAG).commitAllowingStateLoss();
fragment.setArguments(args);
}
return fragment;
}
@Override
public void show(FragmentManager manager, String tag) {
if (manager.findFragmentByTag(tag) == null) {
super.show(manager, tag);
}
}
@Nullable public static Fragment getFragmentByTag(@NonNull FragmentManager fragmentManager, @NonNull String tag) {
return fragmentManager.findFragmentByTag(tag);
}
/**
* 查找fragment
*
* @param fragmentManager fragment管理器
* @param fragmentClass fragment类
* @return 查找到的fragment
*/
public static Fragment findFragment(@NonNull FragmentManager fragmentManager, Class<? extends Fragment> fragmentClass) {
List<Fragment> fragments = getFragments(fragmentManager);
if (fragments.isEmpty())
return null;
return fragmentManager.findFragmentByTag(fragmentClass.getSimpleName());
}
/**
* Generate by live templates.
* Use FragmentManager to find this Fragment's instance by tag
*/
public static MainFragment findFragment(FragmentManager manager) {
return (MainFragment) manager.findFragmentByTag(MainFragment.class.getSimpleName());
}