フラグメントを大量に使用するアンドロイドアプリケーションを開発しています。問題が発生しており、これまで解決策を見つけることができませんでした。 フローはこれです:アプリケーションが起動され、MainActivityが最初のレスポンダーになりました。ユーザーインタラクションに応じて、いくつかのフラグメントがロードされてスタックにプッシュされます。ここ は一例であり:復元時にAndroidリロードフラグメントスタック
主な活動 - >フラグメントA - >フラグメントB - >断片C - >など。
バック履歴がそうように有効になっている: - >フラグメントB
断片C - >フラグメントA - >など。
私のアプリケーションがフォアグラウンドになっている限り、すべてが正常に動作しますが、アプリケーションがバックグラウンドになるとすべてが壊れます。
たとえば、フラグメントBの場合、ホームボタンを押してアプリケーションをバックグラウンドで実行し、それを元に戻すとMainActivityからフラグメントAを開始します。 また、ツールバーにフラグメントBのタイトルが表示され、フラグメントAにはrecyclerviewが含まれているので、背景画像のようにアイテム行間のフラグメントBの部分を見ることができます。
これは私がフラグメントをロードする方法である:
public void loadFragment(Fragment fragment, Boolean addToStack) {
// Load fragment
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.frame_container, fragment);
fragmentTransaction.addToBackStack(null);
// show back button
if (addToStack) {
// Code to show the back button.
}
else if (fragmentManager.getBackStackEntryCount() > 0 && !addToStack) {
hideBackButton();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
fragmentTransaction.commitAllowingStateLoss();
}
私はMainActivityからおよびフラグメントからこの関数を呼び出す:
MyFragment theFragment = new MyFragment();
MainActivity.instance.loadFragment(theFragment, true);
私が達成したいどのようなアプリケーションが復元されたときにそれを取得ということです直前にロードされたフラグメントにまっすぐに戻って、「戻る」履歴全体を保持します。これどうやってするの?
コードの他の部分が必要な場合はわかりませんが、必要に応じて投稿します。
ご返信ありがとうございますが、私はそれを動作させることができません。私のフラグメントのonResumeでは、私はgetSupportFragmentManager()へのアクセス権がありません。私もgetFragmentManager()。findFragmentByTag( "tag_here")とgetChildFragmentManager()。findFragmentByTag( "tag_here")を試しましたが、毎回nullを返します。あなたのアプローチについてもっと教えていただけますか? – Luca