Android 에서 Fragment 중첩 커버 문제 해결 방법
주로 Fragment 의 상태 저장 메커니즘 때문에 시스템 메모리 가 부족 할 때 Fragment 의 주 Activity 가 회수 되 고 Fragment 의 인 스 턴 스 가 이에 따라 회수 되 지 않 습 니 다.
Activity 가 시스템 에 회수 되 었 을 때 onSaveInstance()방법 으로 시각 계층(View Hierarchy)을 저장 하기 때문에 Activity 가 네 비게 이 션 을 통 해 다시 재 구축 되 었 을 때 이전에 실례 화 된 Fragment 는 Activity 에 나타 나 지만 상기 코드 에서 알 수 있 듯 이 새로운 Fragment 를 재 구축 했다.이런 요 소 를 종합해 보면 여러 개의 Fragment 가 겹 쳤 다.
2.만약 이 문제 가 반드시 발생 하 는 문제 가 아니라면 디 버 깅 할 때 개발 자 옵션 의 “이벤트 보류 하지 않 음'열기,모 의 활동 을 위해 즉시 회수 합 니 다.
3.onSave InstanceState()와 onRestoreInstanceState()두 가지 방법.
시스템 이 메모리 로 Activity 를 회수 할 때 만 호출 되 는 줄 알 았 던 onSave InstanceState()는 다른 Activity 로 이동 하거나 다 중 작업 창 을 열 고 홈 으로 메 인 화면 으로 돌아 가 는 작업 에서 도 호출 되 었 으 나 onRestoreInstanceState()는 다시 Activity 로 돌아 갈 때 호출 되 지 않 았 다.그리고 내 가 onResume()에서 발견 하기 전의 Fragment 는 제거 되 었 을 뿐 비어 있 는 것 이 아니 기 때문에 네가 onResume()에서 문제 1 에서 만 든 Fragment 방법 을 실행 하 더 라 도 소 용이 없다.그래서 reove()를 통 해 실 패 를 선언 합 니 다.
이 어 조사 자 료 를 통 해 Activity 의 onSave InstanceState()에 슈퍼.on RestoreInstanceState(saved InstanceState)가 있 는 것 으로 나 타 났 다.구 글 은 이 말 에 대해"Always call the superclass so it can save the view hierarchy state"라 고 설명 했다.이 코드 를 항상 실행 하여 부모 클래스 를 호출 하여 그림 의 상 태 를 저장 합 니 다"라 는 뜻 이다.사실 여기 서 여러분 도 알 게 되 었 습 니 다.바로 이 말 때문에 다시 그림자 가 나 타 났 습 니 다.그래서 저 는 이 말 을 삭 제 했 습 니 다.그리고 onCreate()와 onRestore InstanceState()에서 문제 1 중의 Fragment 만 드 는 방법 을 동시에 사용 한 다음 에 전환 하 는 상 태 를 저장 한 결과 결과 결과 가 매우 완벽 하 다 는 것 을 알 게 되 었 습 니 다.
// Fragment
private int position = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_index);
setTabSelection(position);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
position = savedInstanceState.getInt("position");
setTabSelection(position);
super.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
// position
outState.putInt("position", position);
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.