1. Fragment 생성 코드를 재사용 하지 않는 소스
activity_fragment.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
</FrameLayout>
fragment_sample.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
SampleFragment.java
public class SampleFragment extends Fragment
{
private Button button1 = null;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.fragment_sample, container, false);
this.button1.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Toast.makeText(getActivity(), "버튼 클릭!!!", Toast.LENGTH_SHORT).show();
}
});
}
}
SampleActivity.java
public class SampleActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
Fragment fragment = fm.findFragmentById(R.id.fragmentContainter);
{
fragment = new SampleFragment();
fm.beginTransaction()
.add(R.id.fragmentContainter, fragment)
.commit();
}
}
}
Fragment 생성 코드를 재사용 하지 않으면 액티비티의 onCreate 메소드의 똑같은 내용을
계속 copy&paste 해야 합니다.
추상 액티비티 클래스를 하나 만들어서 Fragment 생성 코드를 재사용 할 수 있습니다.
2. Fragment 생성 코드를 재사용 하는 소스
SingleFragmentActivity.java 추상 액티비티 클래스 생성
public abstract class SingleFragmentActivity extends FragmentActivity
{
protected abstract Fragment createFragment();
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fragment);
Fragment fragment = fm.findFragmentById(R.id.fragmentContainter);
{
fragment = createFragment();
fm.beginTransaction()
.add(R.id.fragmentContainter, fragment)
.commit();
}
}
}
SampleActivity.java 소스 변경
public class SampleActivity extends SingleFragmentActivity
{
@Override
protected Fragment createFragment()
{
return new SampleFragment();
}
}
실무에 바로 적용하는 안드로이드 프로그래밍 책에서 보고 배운 내용입니다.