Fragment 다 중 플러그 인 방법 호출 문제 해결 방안

Fragment 의 생 성과 소개
안 드 로 이 드 는 다양한 장치 에서 작은 스크린 이 있 는 휴대 전화,초대형 스크린 이 있 는 태 블 릿,심지어 텔레비전 까지 운행 한다.화면 크기 의 차이 에 대해 많은 경우 에 핸드폰 을 대상 으로 앱 을 개발 한 다음 에 한 부 를 복사 하고 구 조 를 수정 하여 태 블 릿 신마 의 초대형 화면 에 적응 하도록 한다.앱 하나 로 핸드폰 과 태 블 릿 에 동시에 적응 할 수 없 을 까?당연 하지,있어 야 지.Fragment 의 등장 은 이런 문 제 를 해결 하기 위 한 것 이다.Fragment 를 Activity 의 한 인터페이스의 구성 부분 으로 생각 할 수 있 습 니 다.심지어 Activity 의 인터페이스 는 완전히 다른 Fragment 로 구성 할 수 있 습 니 다.더욱 멋 진 것 은 Fragment 가 자신의 생명 주기 와 사용자 의 사건 을 수신 하고 처리 하 는 것 입 니 다.그러면 Activity 에서 컨트롤 의 사건 처리 코드 를 쓸 필요 가 없습니다.더 중요 한 것 은 어떤 Fragment 를 동적 으로 추가,교체,제거 할 수 있다 는 것 이다.
Fragment 의 생명주기
Fragment 는 반드시 Activity 에 의존 하여 존재 해 야 하기 때문에 Activity 의 생명 주 기 는 Fragment 의 생명 주기 에 직접적인 영향 을 줄 수 있다.홈 페이지 의 이 그림 은 이들 의 생명 주기의 관 계 를 잘 설명 한다.

다음은 Fragment 다 중 내장 상황 에서 어떻게 방법 호출 문 제 를 해결 하 는 지 소개 합 니 다.
이 가능 하 다,~할 수 있다,...
대상 1:A fragment
대상 2:B fragment 중 a listview 또는 a view adapter
상호작용 상황:B fragment 중의 한 인터페이스 에서 정 보 를 얻 은 후에(네트워크 정보 등 일 수 있 음)A fragment 또는 A fragment 에 사건 을 처리 한 후에 B fragment 의 인터페이스 에 변 화 를 알 리 도록 한다.
프로젝트 1
호출 방법 은 중개인 Activity 를 통 해
B fragment 에서 중개인 Activity 를 통 해 A fragment 대상 을 가 져 와 A fragment 에서 호출 하 는 방법
단점:여러 층 이 있 을 때 이런 중개인 의 획득 은 여러 층 의 중개인 이 되 고 중개인 을 여러 번 처리 해 야 한다.
예 를 들 어 B fragment 에 있 는 viewpager 의 list 에 있 는 pager 류 부모 클래스 의 하위 클래스 대상 을 호출 하 는 방법 을 사용 하려 면
1.하위 클래스 대상 은 이 방법 을 다시 써 야 합 니 다.
2.부모 클래스 를 정의 해 야 합 니 다.
3.B fragment 에서 list 의 하위 클래스 대상 을 찾 아 호출 해 야 합 니 다.
4.A Fragment 에서 Bfragment 대상 을 찾 아 이 방법 을 호출 해 야 합 니 다.
이 를 통 해 알 수 있 듯 이 끼 워 넣 는 방식 이 복잡 할 수록 이 방법 은 처리 해 야 할 차원 관계 가 많아 진다.그래서 방안 2
방안 2
인터페이스 방식
A fragment 에서 인터페이스 정의
인 터 페 이 스 를 정의 하 는 방식 으로 Afragment 에서 B fragment 를 호출 하 는 방법 을 보 여 줍 니 다.

public class A_Fragment extends BaseFragment { 
private onSwitchpaperListener onSwitchpaperListener; 
//          
public interface onSwitchpaperListener{ 
void switchpaper(int i); 
} 
//             。 
public void setOnSwichtpaerListener(onSwitchpaperListener listener){ 
this.onSwitchpaperListener=listener; 
} 
@Override 
public void intiEvent() { 
//                      Afragment    B  
if(onSwitchpaperListener!=null){ 
onSwitchpaperListener.switchpaper(position); 
}else { 
} 
} 
}
그리고 Bfragment 는 인 터 페 이 스 를 실현 하고 인 터 페 이 스 를 다시 쓰 는 방법 만 있 으 면 A fragment 에 호출 될 수 있다.
B fragment 의 많은 알 수 없 는 끼 워 넣 은 클래스 중:

mainActivity.getAFragment().setOnSwichtpaerListener(new Slidingleft_Fragment.onSwitchpaperListener() { 
@Override 
public void switchpaper(int i) { 
BaseCenterPaper currentPaper= baseCenterPaperList.get(i); 
tv_title.setText(lists.get(i).getTitle()); 
//    
fl.removeAllViews(); 
currentPaper.initData(); 
fl.addView(currentPaper.getRoot()); 
} 
}); 
위 에서 말 한 것 은 편집장 이 여러분 에 게 소개 한 Fragment 다 중 끼 워 넣 기 방법 으로 문 제 를 호출 하 는 해결 방안 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기