0

アクティビティ A と B があり、どちらも BaseActivity クラスから継承しています。アクティビティ A はいくつかのフラグメントを処理し、そのうちの 1 つからアクティビティ B が開始されます。Activiy BI の onCreate メソッドで、次のメソッドを呼び出します。

addFragmentWithAnimation(ExampleFragment.newInstance(), R.anim.custom_slide_in_bottom, 0 , true);

Base Activity クラスによって受信されます。

@Override
public void addFragmentWithAnimation(Fragment fragment, int i, int i1, boolean isInBackStack) {
    FragmentManager fManager = getSupportFragmentManager();
    fManager.executePendingTransactions();
    FragmentTransaction transaction = fManager.beginTransaction();
    transaction.setCustomAnimations(i, i1);
    transaction.add(R.id.container, fragment);
    if (isInBackStack) {
        transaction.addToBackStack(fragment.getClass().getCanonicalName());
    }
    transaction.commit();
}

そのため、ExampleFragment がアクティビティに追加され、下のアニメーションからスライドインして表示されます。次に、ExampleFragment は同じメソッドを Example2Fragment に呼び出しますが、次のように削除する前に

@Override
public void closeFragmentWithAnimation(Fragment fragment, int i, boolean isInBackStack) {
    FragmentManager fManager = getSupportFragmentManager();
    fManager.executePendingTransactions();
    FragmentTransaction transaction = fManager.beginTransaction();
    transaction.setCustomAnimations(0, i);
    transaction.remove(fragment);
    if (isInBackStack) {
        transaction.addToBackStack(fragment.getClass().getCanonicalName());
    }
    transaction.commit();
}

Example2Fragment から呼び出します。両方のトランザクションがバックスタックに追加されることを強調したいと思います。これまでのところ問題はありませんが、問題はバックスタック ボタンを押したときです。予期される動作が ExampleFragment に到達すると、フラグメントのない空のアクティビティに戻ります

バックスタックは実際にどのように機能しますか? ここで何が欠けていますか?

ありがとう

4

0 に答える 0