私が取り組んでいるアプリケーションのバックキーの動作を変更するために、onBackPressed
関数をオーバーライドしています。.remove(フラグメント)を呼び出した後にフラグメントが削除されない
FragmentTransactionに特定のタグqFrag
を含むフラグメントが含まれている場合、ビューからフラグメントをアニメートする必要があります。
ただし、フラグメントを削除してもまだそこにあるように見えます。このため、私のif文の条件は決してelse
に達しません。
@Override
public void onBackPressed() {
// After pressing the back key a second time, questionFrag still has a value.
Fragment questionFrag = getSupportFragmentManager().findFragmentByTag("qFrag");
// If question fragment in the fragment manager
if (questionFrag != null) {
getSupportFragmentManager()
.beginTransaction()
.setCustomAnimations(R.anim.slide_up, R.anim.slide_down)
.replace(R.id.main_menu_content_frame_layout, new Fragment(), "temp")
.remove(questionFrag)
.commit();
} else {
finish();
}
}
適切にトランザクションマネージャからフラグメントを削除する方法についてアドバイスをいただけますか?
if (questionFrag != null) {
getSupportFragmentManager()
.beginTransaction()
.remove(questionFrag)
.add(R.id.main_menu_content_frame_layout, new Fragment(), "temp")
.setCustomAnimations(R.anim.slide_up, R.anim.slide_down)
.commit();
System.out.println("questionFrag removed successfully");
finish()
} else {
finish();
}
あなたはのSystem.outを追加することができます。
ありがとうございます。トピックに苦しんでいるとこれは確かに役立ちます。 – Airagale