화면 전환 시 onCreate가 계속 호출되는 것을 방지하고자 Manifest.xml에 android:configChanges="orientation|keyboardHidden"를 설정하고

 

TabActivity 안에 intent로 2개의 Activity를 연결하고 각각의 Activity에는 onConfigurationChanged메소드에서 화면 전환 시 로그를 찍도록 하였습니다.

 

 public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    Log.d("TEST", "FirstTab onConfigurationChanged ORIENTATION_LANDSCAPE");
    TextView textView = new TextView(this);
    textView.setText("First Tab LAND");
    setContentView(textView);
    }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
      Log.d("TEST", "FirstTab onConfigurationChanged ORIENTATION_PORTRAIT");
      TextView textView = new TextView(this);
    textView.setText("First Tab PORT");
    setContentView(textView);
    }
}

그리고 tab으로 연결된 Activity(First tab, Second Tab)에는 onResume 메소드에 다가 아래와 같이 구현하였습니다.

 

 protected void onResume() {
  super.onResume();
  Log.d("TEST", "onResume FirstTab");
  Resources r = Resources.getSystem();
      Configuration config = r.getConfiguration();
      onConfigurationChanged(config);
}

그리고 탭 이동 하면서 화면전환 시 각각의 화면에 맞게 TextView로 화면에 land 인지 port인지 찍히도록 하였습니다. 

 

1. 세로 화면에서 어플 실행  : first tab( port )

2. second tab 이동  : second tab( port )

3. second tab 가로 회전 : second tab( land )

4. first tab 이동 : first tab( land )

5. first tab 세로 회전 : first tab ( land )  --> TabActivity에 있는 onConfigurationChanged만 불리고 first tab의 Activity에 있는 onConfigurationChanged 메소드는 호출되지 않았습니다.

 

왜 first tab에 있는 onConfigurationChagned 메소드가 불리지 않았는지 모르겠네요..