2012-12-04 5 views
3

저는 세로 및 가로 모드에 각각 하나씩 두 개의 레이아웃 파일로 활동합니다. 방향을 바꿀 때마다 onCreate 메서드가 호출되는 것을 볼 수 있습니다. 나는 매니 페스트 파일에onCreate를 호출하지 않고 레이아웃을 변경하십시오.

android:configChanges = "orientation" 

을 사용해 보았지만 세로 레이아웃 만 읽습니다. onCreate를 호출하지 않고 가로 모드로 레이아웃을 설정할 수있는 방법이 있습니까?

+0

에서 onCreate가 자동으로 호출된다. – Gix

답변

0

두 개의 레이아웃 폴더를 만들 수 있습니다. 하나는 세로 모드 용이고 다른 하나는 가로 모드 용입니다. 레이아웃 및 레이아웃 랜드.

0

이것은 안드로이드와 함께하는 삶의 사실입니다. 화면의 방향 변경과 같은 구성 변경으로 인해 언제든지 파괴 될 수 있다는 사실을 바탕으로 활동을 개발해야합니다. 화면을 작성하는 데 사용 된 모든 정보를 일시 중지하고 onCreate에 다시 작성하십시오. 당신이 당신의 활동은 가로 모드로하려면

0

, 당신은 AndroidManifest.xml에의 활동이 속성을 설정합니다

 android:screenOrientation="landscape" 

당신은 다른 화면 방향에 대한 같은 폴더에 layout.xml 파일을 넣을 수 있습니다 :

  • 고해상도 \ 레이아웃 땅
  • 고해상도 \ 레이아웃 포트
+0

이것은 정확히 내가 한 일입니다. 여전히 레이아웃 포트 폴더에 배치 한 레이아웃 파일을 사용하는 것 같습니다. –

+0

AndroidManifest.xml에 속성을 추가하십시오. android : screenOrientation = "landscape" – ViliusK

+0

활동은 두 방향 모두를위한 것입니다. 이렇게하면 가로 모드로 제한됩니다. 이건 내가 원하는 건 아니야. :) –

2

android:configChanges = "orientation"을 사용하는 경우 ActivityonConfigurationChanged(...) 메서드를 재정의해야합니다. 새 방향에 대해 newConfig 매개 변수를 확인한 다음 원하는 레이아웃을 수동으로 설정하십시오.

은 다음 링크를 참조하십시오 : 당신이 방향을 변경할 때

onConfigurationChanged(Configuration newConfig)

Handling the Configuration Change Yourself

+0

이것은 어쨌든 내 활동 데이터를 저장하고 재사용해야 함을 의미합니다. 내가 맞습니까? –

+0

나는 그것을 이해하지 못한다. 'android : configChanges = "orientation"을 사용하면 오리엔테이션 변경의 결과로'Activity'가 파괴/재 작성되는 것을 막을 수 있고 대신'onConfigurationChanged (...)'가 호출됩니다. 그러나 다른 모든 설정 변경은'Activity'가 파괴/재 작성되고'onConfigurationChanged (...)'가 호출되지 않습니다. – Squonk

+0

@RameezHussain : 구성 변경 사항을 처리하는 방법을 설명하는 다른 대답을 추가했습니다. – Squonk