Articles

안드로이드 조각을 수명 주기

오늘 우리는 우리 것에 대해 배우 안드로이드 조각을 수명 주기고 구현하는 하나의 활동 등으로 구성된 두 개의 조각에 안드로이드 프로그램입니다.

Android Fragment

FragmentAndroid 의 클래스는 동적 사용자 인터페이스를 구축하는 데 사용됩니다. 조각은 활동 내에서 사용해야합니다. 조각의 가장 큰 장점은 여러 화면 크기에 대한 UI 를 만드는 작업을 단순화한다는 것입니다. 활동에는 임의의 수의 조각이 포함될 수 있습니다.

안드로이드 조각은 그 자체로 대부분의 다른 UI 구성 요소 인 뷰의 하위 클래스가 아닙니다. 대신,조각은 그 안에 전망을 가지고 있습니다. 결국 조각이 사는 활동 내부에 표시되는 것은이 뷰입니다.

기 때문에 안드로이드 조각되지 않은 보기에 추가하는 활동은 다소 다른 추가하는 것보다 보기(예:스트링). 조각은 활동 내부의 뷰 그룹에 추가됩니다. 이 뷰 그룹 안에 프래그먼트의 뷰가 표시됩니다.

다이어그램을 묘사하면 어떻게 되는 조각에 추가되는 활동이다.

안드로이드 단편

첫 번째 활동에 대한 참조를 가져옵니다. 그런 다음 프래그먼트의 뷰가 내부에서 렌더링 될 뷰 그룹에 대한 참조를 가져옵니다. 그런 다음 활동이 조각을 추가합니다. 그런 다음 프래그먼트는 해당 뷰를 만들고 액티비티로 반환합니다. 그런 다음 뷰가 뷰 그룹 부모에 삽입되고 조각이 살아 있습니다.

조각 수명주기

Android 조각 수명주기는 아래 이미지에 나와 있습니다.

android fragment lifecycle

아래는 fragment lifecycle 의 방법입니다.

  1. onAttach():이 메서드는 onCreate()이전에도 먼저 호출되어 조각이 활동에 첨부되었음을 알립니다. 당신은 당신의 조각을 호스팅 할 활동을 전달
  2. onCreateView() : 시스템은 프래그먼트가 처음으로 UI 를 그릴 때가되면이 콜백을 호출합니다. 조각에 대한 UI 를 그리려면 조각의 레이아웃의 루트 인이 메서드에서 뷰 구성 요소를 반환해야합니다. 조각이 UI
  3. onViewCreated()를 제공하지 않으면 null 을 반환 할 수 있습니다.Oncreateview()후에 호출됩니다. 이것은 경우에 특히 유용 상속 onCreateView()구현이지만 우리를 구성할 필요가 결과 전망과 같 ListFragment 때 어댑터 설정
  4. onActivityCreated() :이것은 oncreate()및 onCreateView()후에 호출되어 활동의 onCreate()가 완료되었음을 나타냅니다. 무언가가있는 경우에는 필요한 것을 초기화에서는 조각에 따라 달라집 활동의 onCreate()을 완료된 작업 그 onActivityCreated()를 사용할 수 있는 초기화 작업
  5. onStart():의 종료()메소드가 호출 한 후 조각의 표시 가져옵
  6. onPause(): 시스템 호출 이 방법으로는 첫 번째 표시 사용자가 떠나 조각입니다. 이것은 일반적으로 어디를 투입해야 하는 모든 변경 사항을 저장해야만을 넘어는 현재 사용자 세션
  7. onStop():파편이 될 것이 중지를 호출하여 onStop()
  8. onDestroyView():이라고 전 onDestroy(). 이것은 UI 를 설정 한 onCreateView()에 대한 대응입니다. UI 에 특정한 것을 정리하는 데 필요한 것이 있으면 해당 논리를 onDestroyView()
  9. onDestroy() : ondestroy()는 프래그먼트의 상태를 최종 정리하기 위해 호출되었지만 Android 플랫폼에 의해 호출되는 것을 보장하지는 않습니다.
  10. onDetach():그것은이라고 후 onDestroy(),을 알리는 조각되었습에서 분리됩 활동을 호스팅

안드로이드 조각 클래스가

파편에 추가되었는 안드로이드 API 에서 벌집(API11).

  1. android.app.Fragment:모든 조각 정의에 대한 기본 클래스
  2. android.app.FragmentManager : 클래스와 상호 작용하기 위한 조각을 내는 활동을
  3. android.app.FragmentTransaction:클래스 수행을 위해 원자 설정한 조각의 운영
  4. 때 사용하는 패키지의 호환성 라이브러리 구글에 의해 제공되는 다음과 같은 클래스를 사용해 구현됩니다.

  • android.support.v4.app.FragmentActivity : 에 대한 기본 클래스는 모든 활동을 사용하여 호환성 기반 조각(및 로더)기능
  • android.support.v4.app.Fragment
  • android.support.v4.app.FragmentManager
  • android.support.v4.app.FragmentTransaction
  • 안드로이드 조각 onCreateView()

    여기에 샘플을 사용하여 조각 onCreateView()구현을 위한

public class SampleFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup parentViewGroup, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_sample, parentViewGroup, false); return rootView; }}

onCreateView()방법을 가져옵 LayoutInflater,a 뷰 그룹과는 번들로 매개 변수입니다.

LayoutInflater는 레이아웃 XML 파일을 기반으로 뷰 인스턴스를 만들 수있는 구성 요소입니다. 보시다시피,이 예제는 실제로layout.inflate()를 호출하여 수행합니다.

inflate()방법은 세 가지 매개변수의 id 레이아웃 XML 파일(내부 R. 레이아웃),부모 뷰 그룹으로는 조각 보기를 삽입할 수 있고,세 번째 부울이 말하는 여부에 조각 보기로 팽창된 레이아웃에서는 XML 파일 삽입되어야 하는 부모 뷰 그룹. 이 경우에 우리는 거짓 패스 보기 때문에 첨부됩니다 부모 뷰 그룹,다른 곳에서의 일부에 의해 안드로이드 코드에있는 전화. 전달하는 경우 false 를 마지막으로 매개 변수를 부풀(),부모 뷰 그룹은 아직도 레이아웃에 사용되는 계산의 팽창된 보고,그래서 당신은 통과할 수 없습니다 null 으로 부모 뷰 그룹.

ViewGroup매개 변수의 onCreateView()부모 뷰 그룹으로의 조각가를 삽입 할 수 있습니다. 이것은 조각을”호스트”할 활동 내부의 뷰 그룹입니다.

Bundle매개 변수의 onCreateView()은 번들에서는 조각 데이터를 저장할 수 있습니다,그냥 좋아하는 활동입니다.

Android Fragment Example

Android fragments example project comprises of a single activity holding two fragments: TextFragment and MenuFragment respectively.

android fragment example

Android Fragment Example Code

The MainActivity holds the two fragments TextFragment and MenuFragment. 그래서 수 있습을 시작으로 정의하는 조각에서는 xml 레이아웃

activity_main.xml

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="1.0"> <fragment android:layout_height="match_parent" android:layout_width="match_parent" class="journaldev.com.fragments.fragments.MenuFragment" android:id="@+id/fragment" android:layout_weight="0.5"/> <fragment android:layout_width="match_parent" android:layout_height="match_parent" class="journaldev.com.fragments.fragments.TextFragment" android:id="@+id/fragment2" android:layout_weight="0.5"/></LinearLayout>

으로 우리는 볼 수 있습니다 클래스 파일을 조각의 일부 이 활동으로 정의된 class=”journaldev.com.조각되어 있습니다.조각되어 있습니다.TextFragment”

조각 클래스고 그들의 레이아웃은에서와 같이 정의 조각이다.

package journaldev.com.fragments.fragments;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import journaldev.com.fragments.R;public class TextFragment extends Fragment { TextView text,vers; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.text_fragment, container, false); text= (TextView) view.findViewById(R.id.AndroidOs); vers= (TextView)view.findViewById(R.id.Version); return view; } public void change(String txt, String txt1){ text.setText(txt); vers.setText(txt1); }}

text_fragment.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:gravity="center" android:background="#5ba4e5" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="40px" android:textColor="#ffffff" android:layout_gravity="center" android:id="@+id/AndroidOs"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#ffffff" android:textSize="30px" android:id="@+id/Version"/></LinearLayout>

TextFragment 로 구성되어 textviews 들고 안드로이드 이름과 버전 번호입니다.

package journaldev.com.fragments.fragments;import android.app.ListFragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ListView;import journaldev.com.fragments.R;public class MenuFragment extends ListFragment { String AndroidOS = new String { "Cupcake","Donut","Eclair","Froyo","Gingerbread","Honeycomb","Ice Cream SandWich","Jelly Bean","KitKat" }; String Version = new String{"1.5","1.6","2.0-2.1","2.2","2.3","3.0-3.2","4.0","4.1-4.3","4.4"}; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.list_fragment, container, false); ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, AndroidOS); setListAdapter(adapter); return view; } @Override public void onListItemClick(ListView l, View v, int position, long id) { TextFragment txt = (TextFragment)getFragmentManager().findFragmentById(R.id.fragment2); txt.change(AndroidOS,"Version : "+Version); getListView().setSelector(android.R.color.holo_blue_dark); }}

list_fragment.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@android:id/list" /></LinearLayout>

MenuFragment 표시 ListView. 우리가 볼 수 있듯이 여기서,레이아웃의 ListView 은 기본 simple_list_item_1 에 반대하는 사용자 정의 레이아웃을 위해 우리가 만든 목록보기 이전에 문서입니다.

MainActivity 는 onCreate 메서드에서 setContentView 를 호출합니다. 조각은 xml 파일에서 호출됩니다.

또는 아래 스 니펫과 같이FragmentManager를 사용하여 활동 클래스의 조각을 추가 할 수 있습니다:

getFragmentManager() .beginTransaction() .add(R.id.fragmentParentViewGroup, new MyFragment()) .commit();

여기에는 id fragmentParentViewGroup 속을 포함하는 아래와 같다.

<FrameLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:id="@+id/fragmentParentViewGroup" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyActivity" tools:ignore="MergeRootFrame" />

안드로이드 조각 예 응용 프로그램

아래와 같은 출력을 생산하여 우리의 프로젝트를 당신이 볼 수있는 두 개의 조각이 여기에 존재하고 선택할 경우 그들 중 하나에서 왼쪽 측면 조각, 데이터 채워지는 오른쪽에 있는 조각입니다.

android fragments 예,fragment lifecycle

아래 링크에서 최종 android fragment project 를 다운로드 할 수 있습니다.나는 이것을 할 수 없다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다