2016-09-22 3 views
2

前の断片に戻ってみたい。addtobackstack(null)のような多くの方法を試した。しかし、私は解決策を得ていませんでした。私の問題は、戻るボタンをクリックするとホームフラグメントに移動することです。しかし、私はそれを望んでいませんでした。私は、戻るボタンをクリックすると前の断片に行きます。どのように私はこれを行うことができます誰も教えてくれる?アンドロイドの携帯電話の戻るボタンをクリックすると、前の断片に移動するにはどうすればいいですか?

これは私onActivityCreated()方法である: -

@Override 
     public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      getView().setOnKeyListener(new View.OnKeyListener() { 
       @Override 
       public boolean onKey(View view, int i, KeyEvent keyEvent) { 
        if (i == KeyEvent.KEYCODE_BACK) { 

         getFragmentManager().popBackStack(); 
         return true; 


        } 


        return false; 
       } 
      }); 

     } 

これが最初のフラグメントである: -

Fragment fragment = new Packages(); 
getActivity().getSupportFragmentManager() 
       .beginTransaction() 
       .replace(R.id.container, fragment).addToBackStack(null).commit(); 

これは第2のフラグメントである: -

Fragment fragment = new DeliveryFrag(); 
mContext.getActivity().getSupportFragmentManager() 
          .beginTransaction() 
          .replace(R.id.container, fragment).addToBackStack(null) 
          .commit(); 

これは第三のあります断片: -

Fragment fragment = new paytm(); 
    getActivity().getSupportFragmentManager().beginTransaction() 
             .replace(R.id.container, fragment).addToBackStack(null) 
             .commit(); 

私はビューを取得し、それにセットonClickListnerを適用しています。プログラムはこのメソッドには入っていません。どうしてか分かりません?私が間違っていることを教えてもらえますか?

+0

の可能性のある重複した[バック手動で個々の断片のボタンを押すことに戻って、前のフラグメントに移動するにはどのように?](http://stackoverflow.com/questions/14275627/how-to-go-back-to-直前の断片化時に手動で戻るボタン) – Ironman

+0

@アイロンマン私はそのリンクから解決策を得ていませんでした。 thatswhy私は再び尋ねている。答えが分かれば教えてください。 – aarav

+0

どのようにナビゲートしているか教えてください(例:ホーム>フラグメントA>フラグメントB> ...) –

答えて

0

このメソッドをonResumeで呼び出す必要があります。このように:

@Override 
    public void onResume() { 
     super.onResume(); 

     getView().setFocusableInTouchMode(true); 
     getView().requestFocus(); 
     getView().setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 

       if (keyCode == KeyEvent.KEYCODE_BACK) { 

        getFragmentManager().popBackStack(); 
        return true; 
       } 

       return false; 
      } 
     }); 

    } 
1

fragmentManager.addToBackStack(<fragment tag>).commit();を使用してフラグメントをスタックに保存する必要があります。次に実行するようにしてください​​

0

メイク

public Fragment currentFrag = null; 
public Fragment f1 = new Packages(); 
public Fragment f2 = new DeliveryFrag(); 
public Fragment f3 = new paytm(); 

そして、そのようなすべての公共Fragmentは、Fragmentを変更するボタンを、次の1

@Override 
public void onClick(View v){ 

if(currentFrag == null || currentFrag == f1){ 
    //open second fragment code 
    currentFrag = f2; 
    }else if(currentFrag == f2){ 
    //open third fragment code 
    currentFrag = f3; 
    } 
} 

あなたオーバーライドして、あなたのヌルcurrentFragを埋めますメインアクティビティのonBackPressed()メソッド

@Override 
public void onBackPressed() 
{ 
    if (currentFrag == f1){ 
    super.onBackPressed() // close the app 
    }else if(currentFrag == f2){ 
    //calling your first fragment code 
    currentFrag = null; 
    }else if(currentFrag == f3){ 
    //calling your second fragment code 
    currentFrag = f2; 
    } 
} 

私は私のために働いた....あなたはあなたを助けるかもしれない.....これを試すことができますでも、私は

0

を少し混乱取得していますので、このことができます願ってい...

write addToBackStack(null) before commit(); 

を入力し、のBackPressed()メソッドに次のコードを書き込みます。

FragmentManager fm = getSupportFragmentManager(); 

    if (fm.getBackStackEntryCount() > 1) { 
     ApplicationLog.Log(TAG,"IN > 1"); 
     fm.popBackStack(); //will redirect you previous visited fragment 
    } 
    else if(fm.getBackStackEntryCount()==1) 
    { 
     finish(); //will close application 
    } 
関連する問題