안녕하세요.
날씨가 한겨울 뺨칠만큼 춥네요.
감기 조심하시고 이미 감기이신 분들은 얼른 나으시길...(저도 감기... 훌쩍... ㅡ.ㅜ)

일정관리 앱을 만들어보려고 하는데요,
다른 기능을 더 넣어보려고 우선 일정표시관련 액티비티들 뷰로 만들어 SubMain 이라는 액티비티의
FrameLayout 에 addView 하는 형식으로 묶어놓았습니다.
각 액티비티의 이동은 탭이랑 비슷하게 위쪽에 버튼을 만들어서 움직이도록 했구요.
일정을 추가하는 기능은 별도 액티비티로 만들어서 호출하고 저장 후 닫는 식입니다.

문제는 이 일정을 추가하는 액티비티가 나왔다가 사라진 후 이전 액티비티, 그러니까 SubMain 액티비티로 다시 넘어오는데
일정 추가 이전에 표시되었던 화면이 사라져버리고 없습니다. ㅇㅁㅇ!!!
그렇다고 모든 경우에서 다 사라지는건 아니고... 현재 리스트 보기, 주간 보기, 월간 보기의 3개 액티비티를 FrameLayout 에
넣었습니다. 월간 보기에서 일정을 추가하거나 삭제하면 정상적으로 갱신이 되어서 표시가 되는데
리스트나 주간보기에서 일정 추가나 삭제를 하면 화면이 사라져버리네요.
다른 액티비티를 호출하기 전에 표시되고 있는 액티비티의 뷰를 저장해서 onResume 호출시에 setVisibility 로 visible 시켜주고
requestFocus 로 포커스도 앞으로 가져오는데 이상하게 월간 보기 말고는 제대로 다시 표시가 안됩니다. ㅠ ㅠ
아래는 SubMain 의 소스입니다.

public class SubMain extends ActivityGroup {
 
 static final int MONTH_VIEW = 1;
 static final int WEEK_VIEW = 2;
 static final int DAY_VIEW = 3;
 static final int LIST_VIEW = 4;
 
 private LocalActivityManager LAM;
 private Window wCalendar, wWeekView, wListView;
 private View beforeView = null, vCalendar, vWeekView, vListView;
 //Button btnCalendar, btnPicture, btnVideo, btnOption, btnShop;
 private ImageButton listView, dayView, weekView, monthView;
 private ImageButton addSchedule;
 
 private FrameLayout frame;
 private RelativeLayout topButtonSet;
 
 private int nStatus = 0;
  
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.submain);
     
     frame = (FrameLayout)findViewById(R.id.actSwitch);
     // 상단 버튼
     topButtonSet = (RelativeLayout)findViewById(R.id.topButtonSet);
          
     listView = (ImageButton)findViewById(R.id.topList);
     weekView = (ImageButton)findViewById(R.id.topWeek);
     monthView = (ImageButton)findViewById(R.id.topMonth);
     
     listView.setOnClickListener(bListener);
     weekView.setOnClickListener(bListener);
     monthView.setOnClickListener(bListener);
          
     addSchedule = (ImageButton)findViewById(R.id.addSchedule);
     addSchedule.setOnClickListener(bListener);
     
     setSub();
    
     if(savedInstanceState == null) {
      beforeView = vCalendar;
      beforeView.setTag("MONTH");
     }
    
     beforeView.setVisibility(View.VISIBLE);
     beforeView.requestFocus(View.FOCUS_FORWARD);
 }
 
 // 화면 구성
 public void setSub(){
  Intent intent = new Intent();
          
     LAM = getLocalActivityManager();
     
     //리스트
     intent.setClass(this, SchList.class);
     wListView = LAM.startActivity("ListView", intent);
     vListView = wListView.getDecorView();
     vListView.setVisibility(View.INVISIBLE);
     
     // 주간
     intent.setClass(this, WeekView.class);
     wWeekView = LAM.startActivity("WeekView", intent);
     vWeekView = wWeekView.getDecorView();
     vWeekView.setVisibility(View.INVISIBLE);
     
     // 월간
     intent.setClass(this, Calender.class);
     wCalendar = LAM.startActivity("Calender", intent);
     vCalendar = wCalendar.getDecorView();
     vCalendar.setVisibility(View.INVISIBLE);
     // 프레임에 뷰 추가
     frame.addView(vCalendar);
     frame.addView(vWeekView);
     frame.addView(vListView);
          
     if(beforeView != null){
      beforeView.setVisibility(View.VISIBLE);
      beforeView.requestFocus(View.FOCUS_FORWARD);
     }
     
 }
 
 Button.OnClickListener bListener = new Button.OnClickListener(){
  Intent intent;
  public void onClick(View v){
   switch(v.getId()){
  
   /*==================상단 버튼============================ */
   case R.id.addSchedule : // 일정 추가
    intent = new Intent(SubMain.this, AddSchedule.class);
    startActivity(intent);
    break;
   case R.id.topList :
    hideBefore();
    
    vListView.setVisibility(View.VISIBLE);
    vListView.requestFocus(View.FOCUS_FORWARD);
    
    beforeView = vListView;
    beforeView.setTag("LIST");
    break;
   case R.id.topWeek :
    hideBefore();
    
    vWeekView.setVisibility(View.VISIBLE);
    vWeekView.requestFocus(View.FOCUS_FORWARD);
    
    beforeView = vWeekView;
    beforeView.setTag("WEEK");
    break;
   case R.id.topMonth :
    hideBefore();
    
    vCalendar.setVisibility(View.VISIBLE);
    vCalendar.requestFocus(View.FOCUS_FORWARD);
    
    beforeView = vCalendar;
    beforeView.setTag("MONTH");
    break;
   }
  }
 };
 
 // 캘린더 상단 버튼 숨기기
 public void hideTopButton(){
  topButtonSet.setVisibility(View.GONE);
 }
 
 // 캘린더 상단 버튼 보이기
 public void showTopButton(){
  topButtonSet.setVisibility(View.VISIBLE);
 }
 
 // 이전 뷰 숨기기
 public void hideBefore(){
  beforeView.setVisibility(View.INVISIBLE);
  beforeView.clearFocus();
 }
  
 public void onDestroy(){
  super.onDestroy();
  Log.v("SubMain", "in onDestroy");
 }
 
 public void onStop(){
  super.onStop();
  Log.v("SubMain", "in onStop");
 }
 
 public void onStart(){
  super.onStart();
  Log.v("SubMain", "in onStart");
 }
 
 public void onPause(){
  super.onPause();
  Log.v("SubMain", "in onPause");
 }
 
 public void onResume(){
  super.onResume();
  Log.v("SubMain", "in onResume , beforeView = " + beforeView.getContext());
  frame.removeAllViews();
  setSub();
  //beforeView.setVisibility(View.VISIBLE);
     //beforeView.requestFocus(View.FOCUS_FORWARD);
 }
 
 public void onRestart(){
  super.onRestart();
  Log.v("SubMain", "in onRestart");
 }
}


onResume 에서 beforeView.getContext() 로 확인 해보니 이전에 표시되던 뷰는 제대로 받아옵니다.
어디가 문제인지 모르겠네요.
이상하다거나 잘못된 곳 마구마구 지적해주세요~
도움 부탁드립니다 ㅠ ㅠ