最後の状態に戻るAndroidのフラグメント

私は異なる断片の間で選択するためにAndroidのナビゲーション引き出しを使っています。 フラグメントAにはユーザーインターフェイスがあります。 フラグメントBにはBluetoothスキャンがあります。

ユーザーはフラグメントBに進み、スキャンを実行してデバイスに接続し、デバイスに接続されていることを表示します

フラグメントAに進みます。

フラグメントBに戻ると、画面は新品で接続されていないものとして置き換えられます

別のフラグメントに切り替える前に、フラグメントが最後の状態を記憶する方法はありますか。それとも、これは活動として良いのでしょうか。

これが以前に尋ねられたか、または基本的な質問であるなら謝罪。初めてFragmentsを使用してそれらの問題を解決しました。

前もって感謝します

0

4 答え

1つの簡単な解決策は以下の通りです:addintが新しいFragmentのとき、

Fragment f = new FragmentB();
fragTransaction.addToBackstack(null);
fragTransaction.replace(layout, f);
fragTransaction.commit();

デフォルトのonReturnPressedはスタックをフラグメントにポップします。

あなたが制御したい場合はあなただけの電話

getFragmentManager().popStackBack();
0
追加された
こんにちはMarcos、はい、Bを選択し、次にAを選択した場合はナビゲーションドロワーからはうまくいきました。Bに戻るときは、最後のレイアウトを知りたいときはまだ新しいレイアウトです
追加された 著者 Adey22,

問題を見つけました。あなたが持っているナビゲーション引き出しのためのコードで

        settingsfragment = new SettingsFragment();
        FragmentManager settingsManager = getSupportFragmentManager();
        settingsManager.beginTransaction().replace(
                R.id.fragment_area,
                settingsfragment,
                settingsfragment.getTag()
        ).commit();

ただし、これはコードの最初の行から毎回新しいフラグメントを生成します。

次のように変更されたら

            if (settingsfragment == null)
            settingsfragment = new SettingsFragment();

        FragmentManager settingsManager = getSupportFragmentManager();
        settingsManager.beginTransaction().replace(
                R.id.fragment_area,
                settingsfragment,
                "FRAG_TAG"
        ).commit();

これは、レイアウトがすでに作成されているかどうかを確認し、呼び出されたときに元に戻します。

他のコメントや提案をありがとうございました

0
追加された

私にとっては、「フラグメントAをBに切り替える」をクリックすると常にフラグメントの新しいインスタンスを作成しているように見えます。

フラグメントをうまく処理するために、代わりに ViewPager コンポーネントを使用することをお勧めしますそして状態を失わないために

0
追加された
ViewPagerでナビゲーションドロワーを使用できますか?
追加された 著者 Adey22,
ViewPagerはFragmentPagerAdapterを使ってフラグメントを処理するだけです。
追加された 著者 creonilso rodrigues,
たとえば、vpPager.setCurrentItem(1)を使用して、Nav Drawer Itens Clickでフラグメントをつなぐことができます。このリンクを参照してください。 >
追加された 著者 creonilso rodrigues,

はい、あなたはSaveInstaceStateとOnRestoreStateを使用して行うことができます、あなたもバックスタックマネージャが必要ですが、最初に例として私にあなたのコードをください、

0
追加された
返信が遅れてすみません、私はsaveInstanceStateについて知っています。問題は、ナビゲーションドロワーを使用しているときにフラグメントを切り替えると、onSaveInstanceStateが呼び出されないことです。完全に間違ったことをしているのでない限り
追加された 著者 Adey22,