지난번에는, Fragment를 xml을 이용하여 Activity를 구성하는 방법을 알아봤고,
2011/12/04 - [Programming/android/tablet] - xml을 이용해 Fragment이용하기.
이번에는, java파일을 이용하여, 화면을 구성하는 방법을 알아봅니다.
위 아래 화면이 나누어져 있는 단순한 화면인데요,
이를 Fragment2개를 이용하여, 만들어 봅니다.
1. android sdk 3.0이상을 생성하여, 안드로이드 프로젝트를 생성하여 줍니다.
2. res에 fragment1.xml을 생성하여 줍니다.
[ fragment1.xml ]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Fragment #1"
android:gravity="center" />
</LinearLayout>
2. res에 fragment2.xml을 생성하여 줍니다.
[ fragment2.xml ]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Fragment #2"
android:gravity="center" />
</LinearLayout>
3. Fragment1을 생성하여 줍니다.
[ Fragment1.java ]
package fragment.example01;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Frament1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment1, container, false);
}
}
여기서, onCreateView는 Activity의 onCreate와 같은 역할을 한다고 보시면 됩니다.
4. Fragment2.java를 생성하여 줍니다.
Fragment2.java
package fragment.example01;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Frament1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment1, container, false);
}
}
5. MainActivity를 고쳐준다.
[ FragmentExample02Activity.java ]
package fragment.example02;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.os.Bundle;
import android.view.WindowManager;
public class FragmentExample02Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if(getWindowManager().getDefaultDisplay().getOrientation()==Configuration.ORIENTATION_PORTRAIT){
Fragment1 fragment1 = new Fragment1();
fragmentTransaction.replace(android.R.id.content, fragment1);
} else {
Fragment2 fragment2 = new Fragment2();
fragmentTransaction.replace(android.R.id.content, fragment2);
}
fragmentTransaction.commit();
}
}
이렇게 작성하여 실행하여 주면, 다음과 같이 화면이 나타납니다.
Portrait모드에서는, fragment1이, Landscape모드에서는, fragment2가 나타나게 됩니다.
자바 코드에서 Dynamic하게, Fragment를 로딩하는 것입니다.
이를 어떻게 하는지 알아봅시다.
// FragmentManager를 가지고 온다.
FragmentManager fragmentManager = getFragmentManager();
// FragmentTransaction을 가지고 온다.
FragmentTransaction fragmentTransaction = fragment.beginTransaction();
만약, 세로보기 모드라면, Fragment1을 보여준다.
여기서, android.R.id.content는, 액티비티의 content view를 나타낸다.
if(getWindowManager().getDefaultDisplay().getOrientation()==Configuration.ORIENTATION_PORTRAIT){
Fragment1 fragment1 = new Fragment1();
fragmentTransaction.replace(android.R.id.content, fragment1);
}
// 만약 가로보기 모드라면, Fragment2를 보여준다.
else {
Fragment2 fragment2 = new Fragment2();
fragmentTransaction.replace(android.R.id.content, fragment2);
}
// Replace한 내용을 반영하기 위하여 commit()을 해준다.
// commit()을 하지 않으면, 변동사항이 반영되지 않는다.
위는 Fragment가 무엇인지 알아보기 위해 작성한 간단한 예제이며, 경우에 따라서 다르게 만들어 적용하셔야 합니다.
프로젝트 소스
실행파일
관련글
2011/12/04 - [Programming/android/tablet] - xml을 이용해 Fragment이용하기.
'Programming > android/tablet' 카테고리의 다른 글
ActionBar에 메뉴 넣기. (0) | 2011.12.24 |
---|---|
Action Bar 숨기기 (3) | 2011.12.24 |
Fragment와 AddToBackStack (0) | 2011.12.24 |
xml을 이용해 Fragment이용하기. (9) | 2011.12.04 |
fragment란? (0) | 2011.12.04 |