안드로이드 개발 질문/답변
(글 수 45,052)
화면 전환 시 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 메소드가 불리지 않았는지 모르겠네요..