2016-08-16 7 views
-1

私は、5個のフラグメントを保持するViewPagerと、ビューページページ間で切り替えることができるボタンを持つ下部レイアウトを持つアクティビティを持っていますが、このフラグメントのそれぞれは新しいフラグメントを開くことができます次のようなMainActivityでフラグメントを交換しています:可視フラグメントでonBackPressedを使用する

rootViewIdは、ページ内のルートレイアウトのIDです
FragmentManager fragmentManager = getSupportFragmentManager(); 

Fragment placeDetailsFragment = new PlaceDetailsFragment(); 
fragmentManager.beginTransaction().setCustomAnimations(R.anim.right_in, R.anim.left_out, R.anim.left_in, R.anim.right_out).replace(rootViewID, placeDetailsFragment, fragmentTag.getKey()).addToBackStack(fragmentTag.getKey()).commit(); 

アイデアは私がフラグメントのボタンをハードウェアをバック押すと

は、私ができるようにしたい..私は1と2ページからなどの断片2 ...にを断片化するviewpagerに1ページから入ることができるということです1に戻って1ページ目に戻り、2ページ目に戻るときは2ページ目に戻りますが、デフォルトのonBackPressedビヘイビアは、最後に表示されたフラグメントのみをポップして表示します。前に述べたアクティビティのボトムビューから1ページ目に戻り、現在表示されているフラグメント1をポップするときにポップフラグメント2を押し戻します。

どうすればこの問題を解決できますか?

+0

基本的にonBackStackChangedListenerを実装し、そこに独自のロジックを追加する必要があるかもしれません。 –

+0

@AndreiTあなたに例やリンクを教えてください。 – EyadMhanna

+0

あなたの状況をよりよく説明できますか? – BlueMango

答えて

0

保存最後のフラグメント:保存されたフラグメントポップonBackPressed

Fragment lastFrag; 
FragmentManager fragmentManager = getSupportFragmentManager(); 

Fragment placeDetailsFragment = new PlaceDetailsFragment(); 
fragmentManager.beginTransaction().setCustomAnimations(R.anim.right_in, R.anim.left_out, R.anim.left_in, R.anim.right_out).replace(rootViewID, placeDetailsFragment, fragmentTag.getKey()).addToBackStack(fragmentTag.getKey()).commit(); 

lastFrag = placeDetailsFragment; 

上書き:onBackPressed内部.replaceに

@Override 
public void onBackPressed() { 

    FragmentManager fragmentManager = getSupportFragmentManager(); 

    fragmentManager.beginTransaction().setCustomAnimations(R.anim.right_in, R.anim.left_out, R.anim.left_in, R.anim.right_out) 
     .replace(rootViewID, lastFrag, fragmentTag.getKey()).addToBackStack(fragmentTag.getKey()).commit(); 

} 

お知らせlastFrag代わりのplaceDetailsFragmentを()

+0

これは、私が必要とする現在表示されていない最後に追加されたフラグメントをポップするデフォルトのpopBackStack動作の再実装です:) – EyadMhanna

関連する問題