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();
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.