화면구성순서는 아래와 같다.
- 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()
관련글

댓글 없음:
댓글 쓰기