머리말
거의 1 년 동안 Java와 Android를 학습 한 후에는이 기간의 결과는 Android 클라이언트를 독립적으로 완료하고 메인 라인 버전의 안정성을 보장해야합니다. 이 기간 동안 나는 많은 구덩이를 만났고, 형제와 많은 안드로이드 지식을 배웠습니다. 그러나 사람들은 항상 변화를 받아들이고 너무 편안하게 만들지 않지만 다음 단계는 ROM 포팅을 시작했습니다. 여기서 우리는 이전 항목에 사용 된 가장 많은 조각을 요약합니다.
조각 소개
조각은 활동에서 사용자 인터페이스의 동작 또는 일부로 이해 될 수 있으며 활동에 중첩되어야합니다. 그러나 조각에는 고유 한 독립적 인 XML 레이아웃 파일이 있으므로 패키징이 우수합니다.
조각을 만듭니다
조각을 만들고 활동을 만들어 XML 레이아웃 파일과 Java 클래스를 구현해야합니다.
XML 레이아웃 파일은 다른 레이아웃 파일과 동일합니다.
<? match_pareat "Android : Orientation ="vertical "> <TextView Android : id ="@+id /textView "Android : layout_width ="wrap_content "Android : la yout_height ="wrap_content "Android : text ="@string /testview " / / > <버튼 안드로이드 : id = "@+id /button"Android : layout_width = "wrap_content"Android : layout_height = "wrap_content"android : "@string /button" /> < /linearlayout>
Java 코드에서 일반적으로 다음 수명주기 방법은 필요에 따라 구현 될 수 있습니다.
1. Onattach () : 조각이 활동에 의존하면이 방법에서 활동을 처리하여 조각과 활동 사이의 의사 소통을 달성 할 수 있습니다.
2. oncreate () : 프레임 초기화.
3. OnCreateView () : 시스템은 Fragment의 처음으로 사용자 인터페이스를 그릴 때이 메소드를 호출합니다.
4. OnActivityCreated () : 호스트 활동에 의해 실행 된 후이 방법에서 Fragment의 자체 위젯 인스턴스 및 비즈니스 로직 처리를 수행 할 수 있습니다.
5. OndestoryView () : 프레임이 파괴되기 시작하면 호출합니다.
6. onstart () : 조각을 볼 수있을 때 호출.
조각 수명주기를 조작하는 데 사용되는 다른 콜백 기능도 있습니다.
조각 수명주기
각 조각에는 자체 수명주기 콜백 메소드 세트가 있으며 자체 사용자 입력 이벤트를 처리합니다. 해당 수명주기는 아래 그림에 나와 있습니다.
활동에 조각을 추가하십시오
우선, acitivity가 단편을 지원하는지 확인해야하므로 활동은 일반적으로 FragmentActivity에서 상속해야합니다. 활동에 조각을 추가하는 두 가지 방법은 일반적으로 정적 및 동적입니다.
정적 메소드는 아래와 같이 활동의 XML 레이아웃 파일에 직접 조각을 추가합니다.
<? Match_PareAnt "Android : Baselinealigned ="False "Android : Orientation ="Horizontal "> <Fragment Android :"@+id/first "Android : name ="com.fristfragment : layout_width = "0dp"Android : layout_height = "match_parent"Android : layout_weight = "1" /> <Fragment Android : id = "@+id /second"Android : name = "com.example.se condfragment"android : layout_width = "0DP"Android : layout_height = "match_parent"Android : layout_weight = "1" /> < /linearLayout>
Android : <sprimes>의 이름 속성은 레이아웃에서 인스턴스화 된 조각 클래스를 지정할 때, 활동 레이아웃이 생성되면 레이아웃 파일의 각 프레임을 인스턴스화하고 각각을 호출하여 각각을 얻습니다 . 이 시스템은 <smathment> 요소 위치에 의해 반환 된 뷰를 직접 삽입합니다.
참고 : 각 조각에는 고유 한 식별이 필요합니다. 활성을 다시 시작하면 시스템을 사용하여 조각을 복원하고 제거와 같은 트랜잭션 처리를 캡처 할 수 있습니다. 조각에 대한 ID를 제공하는 세 가지 방법이 있습니다. 세 가지 방법이 있습니다.
동적 방법
FragmentTranscation을 사용하십시오. FragmentTranscation의 API를 사용하여 활동 조각 (예 : 조각 추가, 제거 또는 교체)을 작동 할 수 있습니다. 참조 코드는 다음과 같습니다.
FragmentManager = GetFragmentManager () FragmentTraction = BegIntraction ();
add () 함수의 첫 번째 매개 변수는 단편의 뷰 그룹이며, 이는 리소스 ID (Resource ID)에 의해 지정됩니다. FragmentTranscation을 통해 변경되면 Commit () 시각적 변경으로 적용됩니다.
조각 커뮤니케이션
조각을 직접 전달해서는 안되며, 이들 사이의 상호 작용은 호스트 활동을 통해 수행되어야합니다. 파편 및 비율과 상호 작용하는 세 가지 방법이 있습니다.
1. 활동은 매개 변수로 조각을 만듭니다.
2. 활동은 조각의 객체 핸들을 유지하며, 이는 손잡이를 통해 조각의 공개 방법이라고 할 수 있습니다.
3. 조각은 Onattach 함수에서 정의 된 리스너 핸들을 얻을 수 있습니다.
매개 변수로 프레임을 만듭니다
일부 특정 경우, 조각은 초기화하기 위해 특정 매개 변수가 필요할 수 있습니다. Fragment에는 하나의 인삼 생성자 만 있어야하므로 정적 Newinstance 방법을 사용하여 매개 변수가있는 조각을 만드는 것을 고려할 수 있습니다. 예제 코드는 다음과 같습니다.
android.os.bundle; ;
활동 중에 매개 변수가있는 매개 변수를 간단히로드 할 수 있습니다.
FRAMERTANCE FT = TestFragment.NewIntance ();
조각을 호출하는 방법
활동은 내장 조각 핸들을 얻을 수 있기 때문에이 방법은 조각 핸들을 통해 직접 호출 할 수 있습니다.
public class testfragment 확장 단편 {public void dosomething (String param) {// fragment}}}}} 활동에서는 조각의 객체 핸들을 통해이 메소드를 직접 호출 할 수 있습니다.
공공 계급은 단편성을 확장합니다.
조각 청취자
조각이 이벤트를 활동에 공유 해야하는 경우이 방법을 사용해야합니다. Fragment는 인터페이스를 정의 하고이 인터페이스는 Activity에 의해 구현됩니다. 인터페이스의 활동은 onattach () 메소드에서 달성됩니다.
조각의 정의 된 인터페이스 코드는 다음과 같습니다.
indroid.support.v4.app.fragment; 공개 인터페이스 OnitemSelectListener {public void onrsesitemSelect (문자열 링크);} // 단편이 첨부되면 이벤트가 첨부 된 일단 공개 void Onattach (활동 활동) {super.onattach (super.onattach) {super.onattach (Activity void void onattach) {super.onattach (활동)를 저장합니다. ); OnitemSelectedListener의 활동 인스턴스) {listener = (onitemSelectListener) 활동;} else {wash new classCastException (activeS.to intring () + "imustfragment.onitemselectListener"); Listener.onrsSitemSelect ( "일부 링크");}}활동 에서이 인터페이스를 구현하십시오.
indroid.support.v4.app.fragmentactivity rssfeedatitivity는 mylistfragment를 확장합니다. DetailFragment);} // 이제 파편 이벤트 파일 @override public void onrsesitemSelect (string link) {if (fragment! = null && fragment.isinlayout ()) {fragment.settext (링크. );}}}