화면구성순서는 아래와 같다.
- Fragment Class를 생성해 준다.
- getFragmentManager() Method를 통해 FragmentManager객체를 생성한다.
- FragmentManager 객체의 beginTransaction() 메소드를 호출하여 FragmentTransaction을 생성해준다.
- FragmentTransaction 객체의 add() 메소드를 이용하여 Fragment를 추가해준다.
- commit()를 호출해 주면 연결이 된다.
- commit()이 호출된 이후 바로 Fragment를 호출해 주는 것이 아니므로 사양이 낮은 Tablet은 시간차가 발생할 수 있다. 즉시 화면이 출력하고자 한다면 FragmentManager.executePendingTransactions() method를 호출하면 된다.
◆ XML 화면
<?xml version=”1.0” encoding=”utf-8”?> <linearlayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”match_parent” android:layout_height=”match_parent” android:orientation=”vertical”> <FrameLayout android:id=”@+id/fragmentLayout” android:layout_width=”match_parent” android:layout_height=”match_parent”> </FrameLayout> </LinearLayout>
◆ Activity 화면
public class LifeCycleOfFragmentActivity extends Activity { private static final String TAG = "LifeCycleOfFragment"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_lifecycle_fragment); Log.e(TAG, "Activity >> onCreate"); WawooPsFragment wf = new WawooPsFragment(); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.add(R.id.fragmentLayout, wf).commit(); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.e(TAG, "Activity >> onStart"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.e(TAG, "Activity >> onResume"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.e(TAG, "Activity >> onPause"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.e(TAG, "Activity >> onStop"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.e(TAG, "Activity >> onDestroy"); } }
FragmentTransaction.add() method의 매개변수이다.
public abstract FragmentTransaction add (int containerViewId, Fragment fragment)
public abstract FragmentTransaction add (int containerViewId, Fragment fragment, String tag)
- containerViewId : Fragment를 식별하는 사용하는 Unique한 ID가 된다. 만약 Id를 0으로 설정하며 되면 Activity에 Fragment가 등록되지 않는다.
- fragment : Activity와 연결 시킬 fragment이다.
- tag : Unique한 ID 를 대신하여 Fragment를 찾는데 사용하는 옵션이다.
◆ Fragment 화면
public class WawooPsFragment extends Fragment { private static final String TAG = "WaooPsFragment"; @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); Log.d(TAG, "Fragment >> onAttach"); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); Log.d(TAG, "Fragment >> onActivityCreated"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub Log.d(TAG, "Fragment >> onCreateView"); return super.onCreateView(inflater, container, savedInstanceState); } @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Log.d(TAG, "Fragment >> onCreate"); } @Override public void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d(TAG, "Fragment >> onStart"); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); Log.d(TAG, "Fragment >> onResume"); } @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); Log.d(TAG, "Fragment >> onPause"); } @Override public void onStop() { // TODO Auto-generated method stub super.onStop(); Log.d(TAG, "Fragment >> onStop"); } @Override public void onDestroyView() { // TODO Auto-generated method stub super.onDestroyView(); Log.d(TAG, "Fragment >> onDestroyView"); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.d(TAG, "Fragment >> onDestroy"); } @Override public void onDetach() { // TODO Auto-generated method stub super.onDetach(); Log.d(TAG, "Fragment >> onDetach"); } }
Fragment LifeCycle은 이전에 포스팅 했지만 코드 작성을 한김에 한번 확인 보면 아래 와 같이 나타 난다.
Activity_onCreate() ▶ Fragment_onAttach() ▶ Fragment_onCreate() ▶ Fragment_onCreateView ▶ Fragment_onActivityCreated() ▶ Activity_onStart() ▶ Fragment_onStart() ▶ Activity_onResume() ▶ Fragment_onResume() ▶ Fragment_onPause() ▶ Activity_onPause() ▶ Fragment_onStop() ▶ Activity_onStop() ▶ Fragment_onDestoryView() ▶ Fragment_onDestory() ▶ Fragment_Detach() ▶ Activity_onDestory()
관련글
댓글 없음:
댓글 쓰기