2016-12-20 31 views
0

私はFragmentを持っています。ユーザーがFragmentにBをクリックしてアクションを実行すると、ユーザーはFragment Cにリダイレクトされて最後のビット情報をA. に戻す前に(A→B→C→A)。Navigation Drawerの同じフラグメントにアクセスすると、コンテンツが消去されます

Navigation Drawerを開いてFragmentをクリックすると、現在(A)になっていますが、その内容はなくなり、引き出し自体は残ります。

私はこれの背後にある理由を説明できないようです。 Fragmentが既に作成されている場合は、私のユーザーは、引き出し内の要素をクリックしたときに、私は、このメソッドを呼び出す

// User clicks on an item in Nav. Drawer, call this method 
    private Fragment checkFragmentState(int itemId) { 
    Fragment fragment = null; 

    switch (itemId) { 
     // HOME 
     case R.id.nav_home: 
      if (home == null) { 
       fragment = new Home(); 
       home = fragment; 
      } else 
       fragment = home; 
      break; 
     // SEARCH CARD 
     case R.id.nav_searchCard: 
      if (searchCard == null) { 
       fragment = new SearchCard(); 
       searchCard = fragment; 
      } else 
       fragment = searchCard; 
      break;   
    } 
    return fragment; 
} 

、基本的にそれがあれば、チェックします。ここ

は、私は私のNavigation DrawerFragment状態を節約する方法ですしたがって、現在存在するものを保存し、それを表示するために使用します。

この奇妙な動作を引き起こす原因は何ですか?

+0

チェック[この](http://stackoverflow.com/questions/15392261/android-pass-dataextras-to-a-fragment)の新しいインスタンスを起動します。 – AlphaQ

答えて

0

だけたび

// User clicks on an item in Nav. Drawer, call this method 
private Fragment checkFragmentState(int itemId) { 

    Fragment fragment = null; 

    switch (itemId) { 
     case R.id.nav_home: 
      fragment = new Home(); 
      break; 
     case R.id.nav_searchCard: 
      fragment = new SearchCard(); 
      break;  
     default: 
      fragment = new Fragment();  
    } 

    return fragment; 
} 
+0

ユーザーが以前に入力した内容を1つのフラグメントに保存したい場合、毎回新しいインスタンスを起動するとどうすればいいですか? 編集:それは私の問題を解決します、あなたは私が間違っていたことを私に説明することができますか? –

+0

あなたは 'SharedPreference'またはSqliteデータベースに置くことができます。 –

関連する問題