Android 에서 Fragment 의 기본 용법 예시 요약

머리말
fragment 는 경량급 Activity 라 고 볼 수 있 지만 Activity 와 달리 Activity 에 박 혀 사용 해 야 합 니 다.이 는 장치 화면 크기 의 차 이 를 해결 하 는 데 사 용 됩 니 다.주로 인터페이스의 공간,예 를 들 어 태 블 릿 에 남 은 공간 을 충분히 이용 합 니 다.하나의 Activity 는 여러 개의 Fragment 를 삽입 할 수 있 고 Fragment 는 Activity 의 View 라 고 볼 수 있다.

본 고 는 주로 안 드 로 이 드 에서 Fragment 의 기본 적 인 용법 에 대해 소개 하 였 으 며,여러분 이 참고 하여 공부 할 수 있 도록 공유 하 였 으 며,다음은 더 이상 말 하지 않 겠 습 니 다.상세 한 소 개 를 살 펴 보 겠 습 니 다.
fragment 관리
activity 동적 으로 fragment 불 러 오기
fragment 를 불 러 오 는 레이아웃 은 FrameLayout 에 국한 되 지 않 습 니 다.
불 러 오 는 방법:(가 져 온 fragment 가 v4 패키지 여야 getSupportFragment Manager()가 있 습 니 다.

 FragmentA fragment = new FragmentA();
 getSupportFragmentManager().beginTransaction()
  .add(R.id.XXX, fragment, "fragment")
//  .addToBackStack("") //     
  .commit;
혹은

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.add(R.id.fragment_container, fragment, "fragment"); 
transaction.commit(); 
그러나 두 번 째 방법 은 가방 이 일치 해 야 한 다 는 점 에 주의해 야 한다.

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
add 방법 을 사용 하 는 것 외 에 도 replace 방법 으로 fragment 를 추가 할 수 있 습 니 다.

FragmentA fragment = new FragmentA();
getSupportFragmentManager().beginTransaction()
 .replace(R.id.XXX, fragment,"fragment")
 .commit();
add 와 replace 의 차 이 는:
① add 는 container 용기 에 fragment View 를 쌓 는 것 이다.replace 는 container 용기 에 추 가 된 View 를 모두 제거 한 다음 현재 fragment View 를 추가 합 니 다.
replace 는 fragment 인 스 턴 스 가 아 닌 container 의 보 기 를 지 웠 음 을 기억 하 십시오.reove 는 fragment 인 스 턴 스 를 제거 하 는 것 이 fragment 인 스 턴 스 입 니 다.
② add 후기 에는 show,hide 를 사용 할 수 있 지만 replace 가 안 되 는 이 유 는 ① 참조.
③ add 를 사용 하여 스크롤 백 할 때 fragment 는 다시 불 러 오지 않 습 니 다.작업 흔적 이 존재 합 니 다.replace 스크롤 백 을 사용 할 때 이전의 fragment 는 다시 불 러 옵 니 다.이 유 는 ① 참조.
add 를 사용 할 때 주의해 야 할 것 은 보기 가 겹 치 는 문제 입 니 다.배경 색 을 설정 하 는 것 을 기억 하 세 요.
add 와 replace 는 절대 혼합 해서 사용 하지 마 세 요.그렇지 않 으 면 오류 가 발생 할 수 있 습 니 다.
reove,hide,show 를 진행 하기 전에 판단fragment.isAdded(); 면 의 코드 를 기억 하 세 요.힌트 를 주지 않 겠 습 니 다.
fragment 인 스 턴 스 제거

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment");
 getSupportFragmentManager().beginTransaction()
  .remove(fragment)
  .commit();
프 래 그 먼 트 숨 기기

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment");
 getSupportFragmentManager().beginTransaction()
  .hide(fragment)
  .commit();
프 래 그 먼 트 보이 기

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment");
 getSupportFragmentManager().beginTransaction()
  .show(fragment)
  .commit();
확장:
fragment 에서 새로 고침(즉,fragment 데 이 터 를 처음부터 불 러 오고 후속 스 택 에 영향 을 주지 않 습 니 다)

Fragment replaceFragment = getActivity().getSupportFragmentManager().findFragmentByTag("first_fragment");
    getActivity().getSupportFragmentManager().beginTransaction()
    .detach(replaceFragment)
    .attach(replaceFragment)
    .commit();
쉽게 말 하면 detach 는 fragment 인 스 턴 스 가 아 닌 View 를 없 애 는 것 입 니 다.attach 는 보기 View 를 재 구축 하 는 것 입 니 다.attach 후의 보 기 는 보기 의 맨 앞 에 있 습 니 다.구체 적 인 것 은 스스로 자 료 를 볼 수 있 습 니 다.
2.스크롤 백 작업
스크롤 백

 @Override
 public void onBackPressed() {
 if (getSupportFragmentManager().getBackStackEntryCount() <= 1) { //            Fragment   
  finish();
 } else { //          Fragment,          
  getSupportFragmentManager().popBackStack();
 }
 }
확장:스크롤 백 지정

void popBackStack(String name, int flags); 
매개 변수 string name 은transaction.addToBackStack(String tag)의 tag 값 입 니 다.
int flags 에 대해 서 는 두 가지 수치 가 있 습 니 다.0 또는FragmentManager.POP_BACK_STACK_INCLUSIVE;
      0 을 추출 할 때 매개 변 수 를 제외 하고 이 층 위의 모든 층 이 스 택 에서 물 러 나 고 지정 한 이 층 은 스 택 꼭대기 층 임 을 나타 낸다.
      추출 값 POPBACK_STACK_INCLUSIVE 에 서 는 매개 변수 가 지정 한 이 층 과 함께 스 택 을 종료 하 는 것 을 표시 합 니 다.
창고 지붕 반환:

while (getSupportFragmentManager().getBackStackEntryCount()>1) {
 getSupportFragmentManager().popBackStackImmediate();
}
3.중점 이 왔 습 니 다.fragment 에 fragment 디 스 플레이 문 제 를 불 러 옵 니 다.
1.보이 지 않 음:
fragment 를 불 러 오 는 레이아웃 은 LinearLayout 를 사용 하지 마 십시오.LinearLayout 를 사용 하지 마 십시오.LinearLayout 를 사용 하지 마 십시오.중요 한 것 은 세 번 말 합 니 다.그렇지 않 으 면 불 러 오 는 fragment 가 표시 되 지 않 을 가능성 이 높 습 니 다.
2.불완전 표시:onCreateView 에서 사용 하 는 방식 1.사용 하지 않 는 방식 2.

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
 //    
 View view = inflater.inflate(R.layout.XXX, container, false);
  //    
// View view = inflater.inflate(R.layout.XXX, null);
 return view;
 }
3.이벤트 스 포 를 클릭
① 불 러 온 fragment 의 레이아웃 이 ScrollView 일 경우 투과 사건 이 발생 하지 않 습 니 다.
② 스 포 일 러 이벤트 가 있 으 면 fragment 의 루트 레이아웃 에android:clickable="true" 을 더 하면 클릭 이벤트 가 관통 하 는 문 제 를 간단하게 거 칠 게 해결 할 수 있 습 니 다.
4.리 턴 스 택 의 fragment 수량 가 져 오기
방식 1:activity 가 Fragment Activity 를 계승 하면getSupportFragmentManager().getBackStackEntryCount()activity 에서 스 택 에 저 장 된 fragment 의 수량 을 판단 할 수 있 습 니 다.방식 2 를 통 해 불 러 온 fragment(fragment 에 서브 fragment 를 불 러 옵 니 다)는 포함 되 지 않 습 니 다.
방식 2:이 방식 은 fragment 에서getChildFragmentManager().getBackStackEntryCount()을 통 해 이 fragment 스 택 에 저 장 된 fragment 의 수량 을 판단 하 는 것 입 니 다.

getChildFragmentManager().beginTransaction()
 .replace(R.id.XXX, fragment)
 .addToBackStack(null)
 .commit();
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기