ActivityGroup 사용예제
http://richipal.com/post/2624844577
첨부 그림에서 좌측 TabActivity내에서 첫번째 Tab에 대한 화면을 오른쪽과 같이 바꾸고 싶다면 어떻게 할까? (이때, TabActivity의 틀은 바뀌지 않아야한다.)
ActivityGroup을 모르는 상태라면 아마도 별도의 activity를 생성하여 다시 TabActivity에 등록해주는 방법을 생각하게 될 것이다. 그러나 이러한 방법은 다소 복잡해질 수 있다.
여러분이 ActivityGroup을 사용하여 TabActivity의 첫번째 Activity로 등록을 하게 되면 이러한 문제는 쉽게 해결될 수 있다. 즉, ActivityGroup은 여러개의 Activity를 관리해주는 activity manager라고 생각할 수 있다.
아래는 예제코드이다. 예제에서는 FirstGroup이라는 ActivityGroup이 소개된다. 여기서 핵심은 아래와 같다.
FirstGroup의 매개변수를 보면
private ArrayList<View> history;
이 있다. 이것이 핵심인 것이다. 여기에 등록된 View들을 임의의 상황에서 setContentView(v); 를 사용하여 보여줄 수 있는 것이다.
(즉, 임의의 Activity들로 바꿀 수 있는 것이다. Activity == View로 생각하면 이해가 쉬울 것이다.)
그렇다면 View를 어떻게 만들어서 등록할 수 있는가? 이에 대한 설명은 아래 코드를 보면 쉽게 이해할 수 있다.
Intent i = new Intent(this, ShowCity.class);
String city_name = (String) getListAdapter().getItem(position);
i.putExtra("city_name", city_name);
// Create the view using FirstGroup's LocalActivityManager
View view = FirstGroup.group.getLocalActivityManager()
.startActivity("show_city", i
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
코드를 보면 ShowCity.class라는 Activity가 등록된 Intent로 생성한다. 그리고 ActivityGroup의 getLocalActivityManager()함수를 사용하여 View를 생성하게 되는 것이다. 이렇게 생성된 view를 위의 history 에 등록해줄 수 있는 것이다.
자세한 내용은 예제코드를 참조하시기 바란다.
참고로 ActivityGroup은 API Level 13부터 deprecated로 되었고 Fragment와 FragmentManager사용이 권장되고 있다.