androidx.fragment.app.FragmentTransaction#commitAllowingStateLoss ( )源码实例Demo

下面列出了androidx.fragment.app.FragmentTransaction#commitAllowingStateLoss ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

public static void addFragment(FragmentActivity fragmentActivity, Fragment fragmentToAdd,
                               String fragmentTag) {
    FragmentManager supportFragmentManager = fragmentActivity.getSupportFragmentManager();

    FragmentTransaction fragmentTransaction = supportFragmentManager
            .beginTransaction();
    fragmentTransaction.replace(R.id.layout_child_activity, fragmentToAdd,
            fragmentTag);

    if (supportFragmentManager.getBackStackEntryCount() > 1) {
        supportFragmentManager.popBackStack();
    }
    fragmentTransaction.addToBackStack(fragmentTag);
    fragmentTransaction.commitAllowingStateLoss();
    supportFragmentManager.executePendingTransactions();
}
 
源代码2 项目: science-journal   文件: ManageDevicesActivity.java
private void setupFragment() {
  FragmentManager fragmentManager = getSupportFragmentManager();
  Fragment fragmentById = fragmentManager.findFragmentById(R.id.fragment);
  if (fragmentById != null) {
    manageFragment = (ManageDevicesRecyclerFragment) fragmentById;
  } else {
    manageFragment = new ManageDevicesRecyclerFragment();
    Bundle args = new Bundle();
    args.putString(EXTRA_ACCOUNT_KEY, getIntent().getStringExtra(EXTRA_ACCOUNT_KEY));
    args.putString(EXTRA_EXPERIMENT_ID, getIntent().getStringExtra(EXTRA_EXPERIMENT_ID));
    manageFragment.setArguments(args);
    FragmentTransaction ft = fragmentManager.beginTransaction();
    ft.replace(R.id.fragment, manageFragment);
    ft.commitAllowingStateLoss();
  }
}
 
源代码3 项目: natrium-android-wallet   文件: FragmentUtility.java
/**
 * Performs a fragment addition transaction with all of the necessary animations and tags.
 */
public void performAddTransaction(Fragment fragment,
                                  Animation pushAnimations,
                                  Animation popAnimations,
                                  @Nullable String tag,
                                  boolean addToBackStack,
                                  View sharedElement) {
    FragmentTransaction transaction = mFragmentManager.beginTransaction()
            .setCustomAnimations(
                    pushAnimations.getEnter(),
                    popAnimations.getExit(),
                    popAnimations.getEnter(),
                    pushAnimations.getExit()
            )
            .replace(mContainerViewId, fragment, tag);

    if (addToBackStack) {
        transaction.addToBackStack(tag);
    }

    transaction.commitAllowingStateLoss();
}
 
源代码4 项目: QuickDevFramework   文件: MainActivity.java
private void switchFragment(String tag) {
    /* Fragment 切换 */
    FragmentTransaction transaction = mFragmentManager.beginTransaction();
    if (fragmentTags.indexOf(tag) < 0) {
        return;
    }
    Fragment showFragment = fragments.get(fragmentTags.indexOf(tag));
    Fragment currentFragment = mFragmentManager.findFragmentByTag(currentTag);
    if (currentFragment != null) {
        transaction.hide(currentFragment);
    }
    if (showFragment.isAdded()) {
        transaction.show(showFragment);
    }
    else {
        transaction.add(R.id.content_frame, showFragment, tag);
        transaction.show(showFragment);
    }
    transaction.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    transaction.commitAllowingStateLoss();
    currentTag = tag;
}
 
源代码5 项目: EhViewer   文件: StageActivity.java
public void refreshTopScene() {
    int index = mSceneTagList.size() - 1;
    if (index < 0) {
        return;
    }
    String tag = mSceneTagList.get(index);

    FragmentManager fragmentManager = getSupportFragmentManager();
    Fragment fragment = fragmentManager.findFragmentByTag(tag);

    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.detach(fragment);
    transaction.attach(fragment);
    transaction.commitAllowingStateLoss();
    onTransactScene();
}
 
源代码6 项目: candybar   文件: CandyBarMainActivity.java
private void setFragment(Fragment fragment) {
    clearBackStack();

    FragmentTransaction ft = mFragManager.beginTransaction()
            .replace(R.id.container, fragment, mFragmentTag);
    try {
        ft.commit();
    } catch (Exception e) {
        ft.commitAllowingStateLoss();
    }

    Menu menu = mNavigationView.getMenu();
    menu.getItem(mPosition).setChecked(true);
    mToolbarTitle.setText(menu.getItem(mPosition).getTitle());
}
 
源代码7 项目: arcusandroid   文件: FragmentController.java
public void replaceAfterInitial(@NonNull Fragment fragment) {
    try {
        while (fragmentManager.getBackStackEntryCount() != 1) {
            fragmentManager.popBackStackImmediate();
        }

        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.container, fragment);
        transaction.addToBackStack(fragment.getClass().getName());
        transaction.commitAllowingStateLoss();
    } catch (Exception e) {
        logger.error("An error occurred replacing fragment after initial.", e);
    }
}
 
源代码8 项目: FragmentMaster   文件: Themes.java
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    FragmentManager fragmentManager = getChildFragmentManager();
    if (fragmentManager.findFragmentByTag("TAG_CHILD") == null) {
        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.add(R.id.childContainer, new DarkThemeChildPage(), "TAG_CHILD");
        ft.commitAllowingStateLoss();
        fragmentManager.executePendingTransactions();
    }
}
 
源代码9 项目: GifView   文件: MainActivity.java
public void openFragment() {
    FragmentTransaction trans = getSupportFragmentManager()
            .beginTransaction();
    GifFragment fragmentLocal =  GifFragment.newInstance();
    fragmentLocal.setHasOptionsMenu(true);
    trans.replace(R.id.frame, fragmentLocal, fragmentLocal.getTAG());
    trans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    trans.addToBackStack(fragmentLocal.getTAG());
    trans.commitAllowingStateLoss();
}
 
源代码10 项目: InviZible   文件: ExtendedDialogFragment.java
@Override
public void show(FragmentManager manager, String tag) {
    try {
        FragmentTransaction ft = manager.beginTransaction();
        ft.add(this, tag);
        ft.commitAllowingStateLoss();
    } catch (IllegalStateException e) {
        Log.w(LOG_TAG, "ExtendedDialogFragment Exception " + e.getMessage() + " " + e.getCause());
    }
}
 
源代码11 项目: natrium-android-wallet   文件: FragmentUtility.java
/**
 * Performs a fragment replacement transaction with all of the necessary animations and tags.
 */
public void performReplaceTransaction(Fragment fragment,
                                      Animation pushAnimations,
                                      Animation popAnimations,
                                      @Nullable String tag,
                                      boolean addToBackStack) {
    FragmentTransaction transaction;
    if (tag == null) {
        transaction = mFragmentManager.beginTransaction()
                .setCustomAnimations(
                        pushAnimations.getEnter(),
                        popAnimations.getExit(),
                        popAnimations.getEnter(),
                        pushAnimations.getExit()
                )
                .replace(mContainerViewId, fragment);
    } else {
        transaction = mFragmentManager.beginTransaction()
                .setCustomAnimations(
                        pushAnimations.getEnter(),
                        popAnimations.getExit(),
                        popAnimations.getEnter(),
                        pushAnimations.getExit()
                )
                .replace(mContainerViewId, fragment, tag);
    }

    if (addToBackStack) {
        transaction.addToBackStack(tag);
    }

    transaction.commitAllowingStateLoss();
}
 
源代码12 项目: AndroidAll   文件: FragmentLifecycleActivity.java
public void showFragment(@NonNull Fragment fragment) {
    //相当于new一个实例FragmentTransaction
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    if (fragment.isAdded()) {
        ft.show(fragment);
    } else {
        //把该ft加入到栈中进行管理
        ft.addToBackStack(fragment.getClass().getSimpleName());
        ft.add(R.id.container, fragment);
    }
    ft.commitAllowingStateLoss();
    Log.e("Lifecycle", "getBackStackEntryCount: " + getSupportFragmentManager().getBackStackEntryCount());
}
 
public static void addFragment(FragmentActivity fragmentActivity, Fragment fragmentToAdd, String fragmentTag) {
    FragmentManager supportFragmentManager = fragmentActivity.getSupportFragmentManager();

    FragmentTransaction fragmentTransaction = supportFragmentManager
            .beginTransaction();
    fragmentTransaction.replace(R.id.layout_child_activity, fragmentToAdd,
            fragmentTag);

    if (supportFragmentManager.getBackStackEntryCount() > 1) {
        supportFragmentManager.popBackStack();
    }
    fragmentTransaction.addToBackStack(fragmentTag);
    fragmentTransaction.commitAllowingStateLoss();
    supportFragmentManager.executePendingTransactions();
}
 
源代码14 项目: ShineButton   文件: FragmentDemo.java
public void showFragment(final FragmentManager fragmentManager) {
    this.fragmentManager = fragmentManager;
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.setCustomAnimations(
            R.anim.fragmentv_slide_bottom_enter,
            0,
            0,
            R.anim.fragmentv_slide_top_exit);
    transaction.add(Window.ID_ANDROID_CONTENT, FragmentDemo.this, "FragmentDemo");
    transaction.addToBackStack(null);
    transaction.commitAllowingStateLoss();
}
 
@Override
public void finish() {
    super.finish();
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    for (int id : mActualFragments.keySet()) {
        Fragment fragment = fragmentManager.findFragmentByTag(id + "_key");
        if (fragment != null) {
            fragmentTransaction.remove(fragment);
        }
    }
    fragmentTransaction.commitAllowingStateLoss();
    RootUtils.closeSU();
}
 
public void showAllowingStateLoss(FragmentManager manager, String tag) {
    FragmentTransaction ft = manager.beginTransaction();
    ft.add(this, tag);
    ft.commitAllowingStateLoss();
}
 
源代码17 项目: ridesharing-android   文件: RegistrationActivity.java
private void addFragment(Fragment fragment) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.replace(R.id.fragment_frame, fragment);
    transaction.commitAllowingStateLoss();
}
 
源代码18 项目: tindroid   文件: LoginActivity.java
private void showFragment(String tag, Bundle args, Boolean addToBackstack) {
    if (isFinishing() || isDestroyed()) {
        return;
    }

    FragmentManager fm = getSupportFragmentManager();
    Fragment fragment = fm.findFragmentByTag(tag);
    if (fragment == null) {
        switch (tag) {
            case FRAGMENT_LOGIN:
                fragment = new LoginFragment();
                break;
            case FRAGMENT_SETTINGS:
                fragment = new LoginSettingsFragment();
                break;
            case FRAGMENT_SIGNUP:
                fragment = new SignUpFragment();
                break;
            case FRAGMENT_RESET:
                fragment = new PasswordResetFragment();
                break;
            case FRAGMENT_CREDENTIALS:
                fragment = new CredentialsFragment();
                break;
            default:
                throw new IllegalArgumentException();
        }
    }

    if (args != null) {
        fragment.setArguments(args);
    }

    FragmentTransaction tx = fm.beginTransaction()
            .replace(R.id.contentFragment, fragment)
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    if (addToBackstack) {
        tx = tx.addToBackStack(null);
    }
    tx.commitAllowingStateLoss();
}
 
源代码19 项目: EhViewer   文件: StageActivity.java
private void finishScene(String tag, TransitionHelper transitionHelper) {
    FragmentManager fragmentManager = getSupportFragmentManager();

    // Get scene
    Fragment scene = fragmentManager.findFragmentByTag(tag);
    if (scene == null) {
        Log.e(TAG, "finishScene: Can't find scene by tag: " + tag);
        return;
    }

    // Get scene index
    int index = mSceneTagList.indexOf(tag);
    if (index < 0) {
        Log.e(TAG, "finishScene: Can't find the tag in tag list: " + tag);
        return;
    }

    if (mSceneTagList.size() == 1) {
        // It is the last fragment, finish Activity now
        Log.i(TAG, "finishScene: It is the last scene, finish activity now");
        finish();
        return;
    }

    Fragment next = null;
    if (index == mSceneTagList.size() - 1) {
        // It is first fragment, show the next one
        next = fragmentManager.findFragmentByTag(mSceneTagList.get(index - 1));
    }

    FragmentTransaction transaction = fragmentManager.beginTransaction();
    if (next != null) {
        if (transitionHelper == null || !transitionHelper.onTransition(
                this, transaction, scene, next)) {
            // Clear shared item
            scene.setSharedElementEnterTransition(null);
            scene.setSharedElementReturnTransition(null);
            scene.setEnterTransition(null);
            scene.setExitTransition(null);
            next.setSharedElementEnterTransition(null);
            next.setSharedElementReturnTransition(null);
            next.setEnterTransition(null);
            next.setExitTransition(null);
            // Do not show animate if it is not the first fragment
            transaction.setCustomAnimations(R.anim.scene_close_enter, R.anim.scene_close_exit);
        }
        // Attach fragment
        transaction.attach(next);
    }
    transaction.remove(scene);
    transaction.commitAllowingStateLoss();
    onTransactScene();

    // Remove tag
    mSceneTagList.remove(index);

    // Return result
    if (scene instanceof SceneFragment) {
        ((SceneFragment) scene).returnResult(this);
    }
}
 
源代码20 项目: talkback   文件: SetupWizardActivity.java
private void displayScreen(SetupScreen screen) {
  FragmentManager fragmentManager = getSupportFragmentManager();
  /* Hide the previous fragment. */
  if (currentScreenFragment != null) {
    /* In order to ensure that state information from the previous fragment has been saved, hide
     * the previous fragment with a separate fragment transaction than the one used to show the
     * new fragment. */
    fragmentManager
        .beginTransaction()
        .hide(currentScreenFragment)
        .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
        .commitAllowingStateLoss();
    fragmentManager.executePendingTransactions();
  }

  SetupWizardScreenFragment fragment =
      (SetupWizardScreenFragment) fragmentManager.findFragmentByTag(screen.name());
  FragmentTransaction transaction = fragmentManager.beginTransaction();

  transaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);
  if (fragment == null) {
    /* Create a new fragment. */
    fragment = createScreenFragment(screen);
    if (currentScreenFragment != null) {
      transaction.add(R.id.fragment_layout_container, fragment, screen.name());
    } else {
      transaction.replace(R.id.fragment_layout_container, fragment, screen.name());
    }
  } else {
    /* The desired fragment has been previously created, so show it. */
    transaction.show(fragment);
  }

  /* Update the view to reflect the new screen. */
  transaction.commitAllowingStateLoss();
  currentScreenFragment = fragment;
  currentSetupScreen = screen;
  setNavigationButtonText(currentScreenFragment);

  if (screenViewListener != null) {
    screenViewListener.onScreenShown(currentScreenFragment.getScreenName());
  }

  if (setupScreenListener != null) {
    setupScreenListener.onSetupScreenShown(currentSetupScreen);
  }
}