2016-11-04 7 views
0

두 조각이 있습니다. 그러나 모든 단편은 버튼을 누르면 PeriodFragment로 이어집니다. 내 질문은 사용자가 자신의 휴대폰에서 뒤로 버튼을 누르면 PeriodFragment가 입력 된 부분으로 다시 전환되도록 구현하는 방법입니다.안드로이드 프래그먼트 백 프레스

package com.example.ivanp.msnis; 

public class TvrdjavaFragment extends Fragment { 

    Button btnIdinaperiod; 

    public TvrdjavaFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.fragment_tvrdjava, container, false); 
     // Inflate the layout for this fragment 
     //show date 
     TextView datumprikaz = (TextView) view.findViewById(R.id.datumprikaz); 
     Date danas = new Date(); 

     SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); 
     String novDatum = sdf.format(danas); 

     datumprikaz.setText(novDatum); 
     //End of show date 

     btnIdinaperiod = (Button) view.findViewById(R.id.buttonIdinaperiod); 

     btnIdinaperiod.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       PeriodFragment periodFragment = new PeriodFragment(); 
       FragmentTransaction periodFragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
       periodFragmentTransaction.replace(R.id.frame, periodFragment); 
       periodFragmentTransaction.commit(); 
      } 
     }); 

     return view; 
    } 

} 

나 ':

public class PeriodFragment extends Fragment { 

    Button btnPretrazi; 

    public PeriodFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     View view = inflater.inflate(R.layout.fragment_period, container, false); 


     //buttonPretraziPeriod 
     btnPretrazi = (Button) view.findViewById(R.id.buttonPretraziPeriod); 

     btnPretrazi.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(getContext(),"test", Toast.LENGTH_SHORT).show(); 
      } 
     }); 


     return view; 
    } 

} 

이 내 TvrdjavaFragment.java (PeriodFragment.java로 전환 할 수있는 버튼이 조각 중 하나)입니다 : 이 PeriodFragment.java에서 자바 코드 안드로이드 스튜디오를 처음 접 하셨다면 자세한 내용을 알려주십시오.

+0

백 스택을 사용하십시오. 구글 코드, 당신은 그것을 직접 찾을 수 –

답변

0

가기 backstack에 추가하면 문제가 해결됩니다

periodFragmentTransaction.replace(R.id.frame, periodFragment); 
periodFragmentTransaction.addToBackStack(null); 
periodFragmentTransaction.commit(); 
+0

백 스택은 어디입니까? 나는 코드에서 그것을 보지 못했다. – Ivan

+0

'periodFragmentTransaction.commit();'앞에'periodFragmentTransaction.addToBackStack (null);을 써주면됩니다. – Javanshir

1

According to android docs 앱에서 조각을 사용하여, 개별하여 FragmentTransaction 객체가 다시 스택에 추가해야합니다 상황에 맞는 변화를 나타낼 수 있습니다. 예를 들어 핸드셋에서 조각을 교환하여 마스터/세부 흐름을 구현하는 경우 세부 정보 화면에서 뒤로 단추를 누르면 사용자가 마스터 화면으로 돌아와야합니다. 이렇게하려면 트랜잭션을 커밋하기 전에 addToBackStack()을 호출하십시오.

// Works with either the framework FragmentManager or the 
// support package FragmentManager (getSupportFragmentManager). 
getSupportFragmentManager().beginTransaction() 
         .add(detailFragment, "detail") 
         // Add this transaction to the back stack 
         .addToBackStack() 
         .commit(); 
+0

어디에서 추가합니까? Java 파일은 어디에 있습니까? – Ivan

+0

액티비티에서 조각을 호출하면 ... 'onBackPressed()'에서 백 스택을 사용하여 이전 조각 트랜잭션을 팝합니다 –

관련 문제