2011-08-20 5 views
3

화면이 회전하거나 사용자가 휴대 전화에서 키보드를 슬라이드 할 때 활동이 다시 시작되지 않게하려면 어떻게합니까? 이것이 가능한가? 주위에 뭔가가 있습니까? 모든 관련 답변을 부탁드립니다.방향이 바뀌면 활동이 계속 재개됩니다.

답변

7

manifest.xml에있는 activity 요소의 특정 속성을 선언하면됩니다. 문제가되는 요소는 android:configChanges이며 orientation의 문자열 값을 등록해야합니다. documentation에서

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

: 이러한 구성 중 하나를 변경하면

지금, MyActivity 다시 시작 는 없습니다. 대신, 활동은 onConfigurationChanged()에 대한 호출을 수신합니다. 이 메서드에는 새 장치 구성을 지정하는 Configuration 개체 이 전달됩니다. 구성의 필드를 읽으면 새로운 구성을 결정하고 사용자의 인터페이스에 사용 된 리소스를 업데이트하여 적절히 변경합니다. 이 메소드가 호출 될 때 , 당신의 활동의 자원 객체는 새 구성에 따라 자원을 반환하도록 업데이트 , 그래서 이렇게

당신은 쉽게 활동을 다시 시작 시스템없이 UI의 요소를 재설정 할 수 있습니다 이 경우 Activity이 다시 시작되지 않으며 으로 콜백되므로 이 직접 처리 할 수 ​​있습니다. 당신이 일단

<activity ... 
    android:configChanges="orientation"> 

당신이 방향 변경에 대한 알림을받을 수 onConfigurationChanged() 방법을 구현하거나 할 수 있습니다 : 당신이 문서 here를 읽는다면

+0

몇 가지 샘플 코드를 제공해 주시겠습니까? 나는 그것을 작동시키지 않는 것 같다. – gsfd

+0

일을 할 수없는 것은 무엇입니까? 수정하여 질문에 대한 업데이트를 제공 할 수 있습니까? 당신이 시도한 것과 언급되지 않은 것이 무엇인지 언급한다면 도움이 될 것입니다. –

+3

"오리엔테이션"외에도 질문에 따라 키보드 동작을 처리하기 위해 관련 키보드 구성 변경 사항을 추가 할 수 있으므로 배치하려는 값은 "orientation | keyboard | keyboardHidden"입니다. Nicholas가 말했듯이, 당신은 아마도/onConfigurationChanged()를 직접 처리 할 필요가 있습니다. – momo

0

, 당신은 당신이 매니페스트에 다음을 지정할 수 있습니다 것을 볼 수 있습니다 기본 클래스의 구현을 사용하십시오.

+0

다른 사람을 복사하는 것이 좋습니다 –

+2

@Arvin 두 답변은 4 분 간격으로 나옵니다. 이 답변은 "사본"일 가능성이 거의 없으며 동시에 게시 된 동등한 답변입니다. 그것은 항상 발생하고 큰 문제가되지 않습니다. 이후의 대답이 실제로 유용한 것을 추가하지 않는 한 사람들은 일반적으로 이전 답변을 더 크게 상향 조정합니다. 귀하의 의견은 자신의 답변을 downvoted 데 신 포도와 같은 소리. –

관련 문제