2012-10-10 3 views
1

어떻게 대화 상자에서 onSaveInstanceState/onRestoreInstanceState가 작동하는지 파악하려고합니다. 활동을 사용하면 활동이 종료/재시작 될 때 호출되기 때문에 쉽습니다.onSaveInstanceState/onRestoreInstanceState 대화 상자

활동에 로그인 대화 상자가 표시됩니다. 대화 상자의 onSaveInstanceState/onRestoreInstanceState는 언제 호출됩니까?

개체의 번들을 풀면 자동으로 호출됩니까?

+0

대화를 조작하기 위해 조각을 사용하는 대신 https://stackoverflow.com/questions/7557265/prevent-dialog-dismiss-on-screen-rotation-in-android를 참조하십시오. –

답변

0

대화 상자는 일반 활동처럼 사용하거나 작동하지 않아야합니다. 사용자 입력을 수집하거나 정보를 표시하는 데 사용해야합니다. 체크 박스, 텍스트 뷰 등과 같은 UI 요소를 사용하여 사용자 정의 레이아웃을 만들고 사용자 정보를 캡처하여 나중에 사용하기 위해 저장할 수 있습니다.

로그인 대화 상자에서 사용자 이름, 비밀번호 등의 텍스트 뷰가있는 맞춤 레이아웃을 만들어이 정보를 앱에 저장 한 다음 나중에 사용할 수 있습니다.

여기에 제대로 대화 상자를 사용하는 방법에 대한 공식 문서에 대한 훌륭한 가이드입니다 :

http://developer.android.com/guide/topics/ui/dialogs.html

+0

그런데 Dialog 클래스에는 onSaveInstanceState/onRestoreInstanceState 메소드가 포함되어 있습니까? – theblitz

+0

가끔은 특별한 요구 사항에 따라 대화 상자 클래스를 서브 클래스 화하고 라이프 사이클을 관리해야 할 수도 있습니다. 그러나 위에서 설명한 방법은 개발자 가이드에 따라 Google에서 권장하는 방법입니다. –

+0

문제는 - 활동이 Android에 의해 종료 된 다음 다시 시작된 경우 수행 할 작업입니다. 대화 상자가 현재 표시된 경우에는 다시 표시되지 않습니다. – theblitz

1

@theblitz이 : 네,이 활동에서 대화의 수명주기를 관리하기 위해 다소 불편하다.

대화 상자에 상태 변수를 가져 오기위한 getter 메서드가 있고이 변수를 Activity Bundle에 저장합니다. Activity의 onResume 또는 onCreate에 따라 Bundle에서 저장된 변수를 검색하고이를 Dialog의 매개 변수화 된 생성자에 전달하여 새 Dialog를 작성합니다. 이제 대화 상자에 선천적으로 상태를 유지한다는 착각을 불러 일으켰습니다. Dialog에서

0

문서는 말 :

참고 : 활동, 생성을 관리하는 기능을 제공 절약하고 이 대화 상자의 복원. {@link Activity # onCreateDialog (int)}, {@link Activity # onPrepareDialog (int, Dialog)}, { Activity # showDialog (int)} 및 {@link Activity # dismissDialog (int)}를 참조하십시오.

그래서 알고 싶다면 대화 상자의 onSaveInstanceState/onRestoreInstanceState는 언제 호출됩니까? Activity#onCreateDialog(int)에 대화 상자를 만들고 Activity#showDialog(int) 대화 상자를 표시해야합니다. Activity#performSaveInstanceState을 볼 수 있으며 Activity#saveManagedDialogs이라고합니다. 하지만 지금 DialogFragment을 사용해야합니다.

관련 문제