2016-09-22 1 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(); 

이것은 두 번째 단편 -

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- previous-fragment-on-pressed-manually-back-of-individu) – Ironman

+0

@ 아이언 나는 그 링크에서 해결책을 얻지 못했습니다. 내가 왜 다시 묻는 지 알지 못한다. 대답을 안다면 나에게 말해줘. – 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();을 사용하여 조각을 스택에 저장해야합니다. 그런 다음 시도하십시오 getFragmentManager().popBackStack();

0

만들기

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

다음과 같이 모든 공공 FragmentFragment을 변경 버튼을, 그 다음 하나

@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() 방법

,848,

나는 ... 당신을 도울 수 있습니다 ..... 당신이 시도 할 수 있습니다 .... 심지어 내가 조금

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 
    } 
관련 문제