2017-09-29 5 views
0

Androidのナビゲーションドロワーを使用して、さまざまなフラグメントを選択しています。 フラグメントAにはユーザーインターフェイスがあります。 フラグメントBにはBluetoothスキャンがあります。Androidフラグメントが最後の状態に戻る

ユーザーは、断片Bに行くのスキャンを行い、デバイスに接続し、デバイス

への接続を示し、それは真新しいように画面を置き換えるバック断片Bに戻るとフラグメントA.

に行き、接続されていない

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

これまでまたは基本的な質問があった場合はお詫び申し上げます。初めてフラグメントを使用し、それらのハングアップを取得します。事前

答えて

0

を失っていないお勧めします。あなたが持っているナビゲーションドロワーのコードで

 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

おかげで、はい、あなたはSaveInstaceStateとOnRestoreStateを使用して行うことができますが、あなたもbackstackマネージャが必要ですが、最初の例として、私にあなたのコードを与える、

+0

に感謝し、私はsaveInstanceStateについて知っています。問題は、ナビゲーション・ドロワーを使用してフラグメント間を切り替えると、onSaveInstanceStateが呼び出されないということです。私は通常の – Adey22

0

一つの簡単な解決策は、にある次の場合いるAddInt

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

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

あなたは私だけのために

getFragmentManager().popStackBack(); 
+0

こんにちはマルコスに間違って何かをやっていない限り、これはうまくいきましたが、Bを選択するとナビゲーションドロワーからAを選択し、Bに戻ると、レイアウト – Adey22

0

を呼び出しますを制御したい場合は、それはあなたが「BにフラグメントAを切り替える」でクリックしたときには、常に断片の新しいインスタンスを作成しているように見えるのです。

は、私はあなたがより良いの断片を処理するために、代わりにViewPager componenteを使用し、問題を発見状態

+0

ViewPagerでナビゲーションドロワーを使用できますか? – Adey22

+0

ViewPagerは、FragmentPagerAdapterを使用してフラグメントを処理するだけです。 –

+0

Nav Drawer Itensでフラグメントを一致させることができます。たとえば、vpPager.setCurrentItem(1)を使用してクリックします。このリンクを見てくださいhttps://ガイド。codepath.com/android/ViewPager-with-FragmentPagerAdapter#setup-fragmentpageradapter –

関連する問題