2014-12-22 3 views
0

Activity이 오리엔테이션이 바뀔 때 onCreate()을 반복해서 통과하지 못하게해야합니다. 오리엔테이션이 매번 바뀔 때 onCreate 메서드가 실행되는 이유

나는 나의 AndroidManifest.xml에 다음 코드를 추가 :

android:configChanges="orientation|keyboardHidden|screenSize" 

그리고 Activity에 방법을 추가,하지만 여전히 ... onCreate() 방법으로 방향이 변경 될 때마다 간다

+0

귀하의 경우 활동이 다시 생성되는 것을 중단해야하는 이유는 무엇입니까? – hmartinezd

+0

'android : configChanges = "orientation | keyboardHidden | screenSize' 이것은 불쾌한 해킹입니다. 아래의 조언을 따르십시오. – Simon

답변

5

이것은 정상적인/올바른 동작입니다.

방향이 당신의 Activity의 레이아웃을 변경, 그래서 다시 한 번 onCreate() 통해거야 (새 구성으로 UI를 적용 할 수 실제로 - 세로은 모든 UI에서 풍경 아니다/현명한 UX).

android:configChanges (Android Dev Guide에서); 이것은 단지 문제를 피하고 나쁜 습관입니다.

참고 : (android : configChanges) 사용은 피해야하며 최후의 수단으로 만 사용해야합니다. 구성 변경으로 인해 재시작을 올바르게 처리하는 방법에 대한 자세한 내용은 런타임 변경 처리를 참조하십시오.

Android lifecycles and how to save its states (나중에 다시 복원하려면) runtime changes 올바른 방법으로 처리하십시오.

0
One of to stop an Activity from going through onCreate() over and over again when orientation changes, is to set Activity's Orientation 
in AndroidManifest.xml to say, "portrait" using below code. 



<activity 
       android:name="com.example.YourActivity" 
       android:screenOrientation="portrait" 
       android:label="@string/app_name" > 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 
        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
</activity> 

하지만 이는 사용자가 기대하지 않을 인물 모드에서만 지원되도록 활동 UI를 제한한다는 것을 의미합니다.

그리고 우리는 안드로이드와 함께하려고하는 경우 : configChanges는 = "오리엔테이션 | 화면 크기", 시스템이 keyboardHidden을 제외하고, 당신의 활동을 다시해서는 안된다. 이 응용 프로그램을 개발하고 있다고 가정

는 API 레벨을합니다 (의 minSdkVersion 및 targetSdkVersion을 속성에 의해 선언 된) 13 이상을 대상으로, 당신은 또한 "화면 크기"구성을 선언해야합니다.