フラグメントがCompanyFragment、DashboardFragment、CalendarFragmentと表示されています。 私のデフォルトフラグメントはCompanyFragmentです。POP_BACK_STACK_INCLUSIVE前のフラグメントのonResumeメソッドを呼び出す原因
流れがそうDashboardFragmentに戻ってくる必要がありますCalenderFragmentから日付を選択した後CalenderFragment- 選択カンパニーである必要があります期待
は、今私は3つの断片は、フラグメントマネージャに追加されてい CompanyFragment - > DashboardFragment - > CalenderFragment私は私が使用していますfragmentmanagerにフラグメントエントリをチェックするには
public void setFragmentToContainer(Fragment fragment) {
final String tag = fragment.getClass().getName();
if (manager == null) {
manager = getSupportFragmentManager();
}
transaction = manager.beginTransaction();
if (isFragmentInBackstack(manager, tag)) {
if (fragment instanceof DayPartStoreListingFragment) {
} else {
manager.popBackStackImmediate(tag, manager.POP_BACK_STACK_INCLUSIVE);
}
} else {
// Fragment doesn't exist
}
if (fragment instanceof CalenderFragment) {
transaction.setCustomAnimations(R.anim.slide_up, 0, 0, R.anim.slide_down);
}
if (fragment instanceof DayPartStoreListingFragment) {
transaction.add(R.id.layout_content, fragment, tag);
} else {
transaction.replace(R.id.layout_content, fragment, tag);
}
if (fragment instanceof CompanyLevelFragment) {
//Exit app on back press
} else {
transaction.addToBackStack(tag);
}
transaction.commit();
}
フラグメントに置き換え/追加するには、次のコードスニペットを使用しています
次のコード
public static boolean isFragmentInBackstack(final FragmentManager fragmentManager, final String fragmentTagName) {
for (int entry = 0; entry < fragmentManager.getBackStackEntryCount(); entry++) {
if (fragmentTagName.equals(fragmentManager.getBackStackEntryAt(entry).getName())) {
return true;
}
}
return false;
}
問題は次のとおりです。 私はDashboardFragmentを開こうとしたときCalendarFragmentからCompanyFragmentのonResumeが呼び出された後、DashboardFragment onResumeが呼び出されます。 注:私はCompanyFragmentをCalenderFragmentから呼び出さず、CompanyFragments onResumeはDashboardFragmetのonResumeの前に自動的に呼び出されます。別の断片についても同じことが起こります。日付変更後、前のフラグメントのonResumeが最初に呼び出され、次に要求されたフラグメントのonResumeが呼び出されます。
デバッグ後に私が見つけた問題 manager.popBackStackImmediate(tag、manager.POP_BACK_STACK_INCLUSIVE);
上記のコードからこの行を削除しても、上記のシナリオを再現できない場合は、しかし、バックスラックから同じフラグメントの古いエントリをクリアするには、この行が必要です。私は本当に助けが必要です。
サポートライブラリのどのバージョンを使用していますか? –
こんにちはPosumyambu私はこの問題を解決することができます。答えは – Reena
にポストしてください。 Pls。 –