私はどのような方法で逆戻りするのかよく分かりません。これは、onBackPressメソッドをオーバーライドし、フラグメントトランジションでフラグメントをロードしたためです。バックプレスを押すと、フラグメントを開始し、新しいコピーフラグメントオブジェクトを作成します。ネットワーク通話が再び呼び出されないようにすることができます。
これを試すことができます。 onbackpressメソッドをオーバーライドします。
@Override
public void onBackPressed() {
int count = getSupportFragmentManager().getBackStackEntryCount();
if (count == 0) {
navigateActivity(HomeActivity.class);
} else {
getSupportFragmentManager().popBackStackImmediate();
}
}
、次のように新しいフラグメントを開始し、これは役立ちます
public void switchFragment(Fragment frag) {
String backStateName = fragment.getClass().getName();
FragmentManager manager = getSupportFragmentManager();
boolean fragmentPopped = manager.popBackStackImmediate (backStateName, 0);
if (!fragmentPopped){
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.report_fragment, frag);
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragmentTransaction.addToBackStack(backStateName);
fragmentTransaction.commit();
}
}
希望。
はい、避ける方法はたくさんあります。 – Piyush
フラグメントトランザクションに置き換えを使用している可能性がありますか? addを使用すると、フラグメントが削除されないようになります。いくつかのコードを追加できれば役に立ちます。https://developer.android.com/guide/components/fragments.html#Transactions –
はい私はreplaceメソッドを使用しています。それはその問題の理由ですか?以前のフラグメントを置き換えるために戻ってくるときに再び状態を作成する必要がありますか? – slenderm4n