2012-02-01 5 views
7

現在のフラグメントと前のフラグメントを表示するには?同様に私が押して「戻る」ボタンを私はこのような構成を使用してい前のフラグメントを表示する

だ場合:

FragmentManager fm=getFragmentManager(); 
FragmentTransaction ft=fm.beginTransaction(); 
ft.remove(fragment).commit(); 

しかし、それはちょうどあなたが追加FragmentTransaction.addToBackStack(null)を呼び出す必要があり、以前の

答えて

13

を表示せず、現在のフラグメントを削除そのフラグメントを削除したい場合はFragmentManager.popBackStack()に電話してください。

+2

そして、これを行うと、BACKボタンの動作を無効にする必要はありません。表示されているフラグメントは自動的に削除され、BACKを押すとバック​​スタックの次のフラグメントが自動的に表示されます。 –

+0

これは私のために働いていません私はv4ライブラリを使用しています。 –

+0

FragmentManager.popBackStack()はフラグメントをリロードします。 –

4

は、あなたの活動に、このメソッドを追加します。

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
      if(this.getFragmentManager().getBackStackEntryCount() != 0){ 
       this.getFragmentManager().popBackStack(); 
       return true; 
      } 
      // If there are no fragments on stack perform the original back button event 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

を次にあなたが断片を変更されている場合、このん:

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
transaction.replace(android.R.id.content, new YourFragmentName()); 
transaction.addToBackStack(null); // this is needed for the above code to work 
transaction.commit(); 
0

を削除した後、以前のフラグメントを表示するようにしてください:

FragmentManager fm=getSupportFragmentManager(); 
    FragmentTransaction ft=fm.beginTransaction(); 
    ft.remove(fragment).commit(); 

    previousFragment=(SherlockFragment)getSupportFragmentManager() 
    .findFragmentByTag(""+currentTagNum); 
    getSupportFragmentManager().beginTransaction() 
      .show(mFragment) 
      .commit(); 
関連する問題