저는 TabActivity를 쓰지않고 ActivityGroup으로 쓰는 이유는 tab을 유지한 상태에서 화면전환을 하려고 ActivityGroup을 사용하고 있습니다.
a라는 tab안에 Activity가 A,B,C 라고 세개가 있다고 가정하면 A에서 클릭했을때 B Activity로 잘 넘어가고 C Activity로 잘 넘어갑니다.
다만 문제가 되는 부분은 back키를 눌렀을 때의 상황입니다.
A,B,C라는 Activity를 감싸고 있는 것이 ActivityGroup를 상속받은 class에 Back 이벤트를 처리할 수 있게 해놓았는데 문제는 Back키를 사용하여
C Activity에서 B Activity로 넘어가서 B에서 뿌려진 ListView 중 다른 ListView 영역을 클릭했을 때 전에 보여진 View의 내용이 바뀌지 않고 View가 나타난다는 것입니다. ActivityGroup을 상속받는 클래스에서 ArrayList<View> 형식으로 View들을 관리하는데 인덱스 값을 구해 remove 시켰는데 자꾸만 전에 있는 View가 사라지지 않고 남아 있더라구요. View를 ArrayList형식으로 저장하였는데 Activity를 호출하면서 다른곳에 전에 사용된 Intent값들을 가지고 있다가 걔네들을 다시 호출하는 것 같더라구요.
제가 혹시 잘못알고 있는지는 모르겠지만요. 아무튼
혹시 이게 Activity를 처리하면서 Task에 Intent값을 저장해 놓아서 그런지 모르겠지만 Activity 3개를 다 타고 나서 Back키를 누르면 왜 초기에 Activity를 타면서 만들어진 View들이 사라지지 않고 다시 보여지는지 아시는 분 있으면 정보를 공유하고 싶습니다.
View가 추가되는 부분 소스입니다. ActivityGroup을 상속받은 Class
public void changeView(View v){
int index = history.size();
if(history.size()==0){
history = new ArrayList<View>();
history.add(v);
history.set(index, v);
}else{
history.add(v);
history.clone();
history.set(index, v);
// history.clone();
}
setContentView(history.get(index));
}
View가 remove되는 부분입니다. ActivityGroup을 상속받은 Class
public void back(){
// index = 0 ~ 4
if(history.size()>0){
int index = history.size()-1;
// history.remove(history.size()-1).clearFocus();
// history.remove(history.size()-1).hashCode();
history.remove(index);
if(history.size()>0){
setContentView(history.get(index-1));
}else{
finish();
}
}else{
finish();
}
Activity activity = activity_group.getCurrentActivity();
activity.isFinishing();
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
E_ActivityGroup.activity_group.back();
// super.onBackPressed();
}
Activity 소스부분에서 Intent값을 처리하는 부분
public void getNextHistory(String id, Intent intent){
E_ActivityGroup parent = (( E_ActivityGroup )getParent());
View view = parent.activity_group.getLocalActivityManager().startActivity(id, intent).getDecorView();
parent.activity_group.changeView(view);
}