2012-07-01 5 views
5

[이 링크] [1]처럼 많은 게시물을 읽었습니다. 회전시 onCreate 활동을 다시 호출하지 못하도록 onConfigurationChanged 이벤트를 명시하고 처리하는 방향을 configChanges에 추가하는 것이 하나의 해결책입니다. 내가 그랬어 이벤트가 제대로 실행되지만,이 실행 후 onCreate 메서드도 실행됩니다! 왜? 나는 무엇을 놓치고 있습니까? 당신에게오리엔테이션이 바뀔 때

매니페스트,

<activity 
      android:name="webPush" 
      android:configChanges="keyboardHidden|orientation"/> 

활동,

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     setContentView(R.layout.vistaaib); 
    } 

@Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vistaaib); 
... 

답변

11

을 .........

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

는 안드로이드 3.2 (API 레벨 13), 의지 "화면을 시작으로 크기 "는 장치가 세로 방향과 가로 방향 사이를 전환 할 때도 변경됩니다. API 레벨 13 이상을 위해 개발할 때 방향 변경으로 인해 런타임 다시 시작을 방지하려는 경우 menifest 파일에서 API 레벨 12 이하

에 대해 작업하는 경우 따라서, 당신은

android:configChanges="orientation|screenSize" 
+0

여전히 onConfigChanges 이벤트 이후에 onCreate를 수행합니다. – Jaume

+0

AndroidManifest 파일에서 onCreate() 호출을 방지해야 할 필요가있는 활동에 대해 언급 했습니까? –

+0

예, webPush는 onCreate 메소드를 방지해야하는 활동입니다. – Jaume

1

쓰기 그 활동의 매니페스트 파일에서이 코드 두 줄을 감사드립니다.

이 문제가 해결 될 것 같습니다. <activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>

+0

당신이 방향이 때문에 런타임 다시 시작을 방지하려면 여전히에서 onCreate가 onConfigChanges 이벤트 후 – Jaume

1

구성 변경시 귀하의 활동이 재시작됩니다. 대부분 키보드 상태가 변경되기 때문에 재시작 될 가능성이 큽니다. 활동의 속성이 추가보십시오 :이 작동합니다 생각

android:configChanges="orientation|keyboard|keyboardHidden" 
+0

여전히 onConfigChanges 이벤트 – Jaume

+1

후에서 onCreate를 트리거 트리거 API 레벨 13 이상으로 개발할 때 변경하면 "orientation"값 이외에 "screenSize"값을 포함해야합니다. 즉, Android를 decalare해야합니다 : configChanges = "orientation | screenSize" – Rashid

0

를 사용해야 넣어 활동 이름을 선언 한 직후에

android:configChanges="orientation" 

는 e.g.-
<activity 
     android:name=".NameOfYourActivity" 
     android:configChanges="orientation"/> 

안드로이드 3.2 (API 레벨 13) 또는 상위 버전 화면 크기

도 너무도이 선언 변경됩니다 회전을 변경한다. 이것에 대한

,

android:configChanges="orientation|screenSize" 
2

나는이나요. 이 코드를 추가하면 완벽하게 작동합니다.

<activity 
     android:name="?" 
     android:label="@string/?" 
     android:theme="@style/?" 
     android:configChanges="orientation|screenSize"> 

기기가 회전 할 때 무언가를 변경하려면 활동 아래에 추가해야합니다. 현재 사용 가능한 화면 크기가 변경 화면 크기

:

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 
0

이유를

이벤트가 될 수에 따라. 이 값은 현재 가로 세로 비율에 비해 현재 사용 가능한 크기의 변화를 나타내므로 사용자가 가로 및 세로 사이를 전환 할 때 변경됩니다.그러나 애플리케이션이 API 레벨 12 이하를 목표로하는 경우 활동이 항상이 구성 변경을 처리합니다 (이 구성 변경으로 인해 Android 3.2 이상 기기에서 실행되는 경우에도 활동이 다시 시작되지 않음). 13

그래서 "오리엔테이션"과 함께 API 레벨 추가뿐만 아니라 "화면 크기"를 추가

관련 문제