Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 포켓볼
- UIView
- error
- push
- simulator
- loop
- swift3
- LG유플러스
- 해몽
- Bitcode
- 공략
- 페이백
- 스마트폰
- IOS
- 신도림 테크노마트
- 앱스토어
- UITableView
- Check
- 샘플
- 신도림
- 얻는법
- afterdelay
- 포켓몬 GO
- 아이폰7
- Example
- GCD
- 보라카이
- swift
- setting
- Xcode
Archives
- Today
- Total
도래울
savedInstanceState 란? 본문
Activity의 onCreate함수는 다음과 같다.
public void onCreate(Bundle savedInstanceState) {
도대체 savedInstanceState 란 뭘까? 이것이 왜 필요할까?
화면이 세로모드에서 가로모드로 전환 시 onCreate함수가 다시 호출된다. 만약 전역변수를 설정하고 그 값을 유지하며 항상 사용해야 하는 경우라도 화면이 세로모드에서 가로모드로 변경될 경우 전역변수에 설정한 값이 모두 초기화 된다. 이런 경우 변경된 값을 유지하고 싶다면 savedInstanceState을 이용하는 것이 좋다.
우선 다른 Activity를 호출할 경우 (세로모드 화면레이아웃과 가로모드 화면레이아웃이 다를경우도 해당된다)에 아래의 메써드가 호출된다.
@Override protected void onSaveInstanceState(Bundle outState)
위 메써드에 유지하고자 하는 값을 저장하도록 하자.
예.
@Override protected void onSaveInstanceState(Bundle outState) { int currentTodoPosition = getCurrentTodoList().indexOf(currentTodo); outState.putInt("currentCategoryPosition", currentCategoryPosition); outState.putInt("currentTodoPosition", currentTodoPosition); super.onSaveInstanceState(outState); }
그런 후에 onCreate 메써드에서 savedInstanceState값이 null이 아닌경우 그 값을 불러서 쓸 수 있다.
예.
if (savedInstanceState != null) { currentCategoryPosition = savedInstanceState.getInt("currentCategoryPosition"); int currentTodoPosition = savedInstanceState.getInt("currentTodoPosition"); refreshTodoList(); if (currentTodoPosition != -1) { currentTodo = getCurrentTodoList().get(currentTodoPosition); } }
'개발 > Android' 카테고리의 다른 글
[Android] Emulator에서 .apk 파일 설치 방법 (0) | 2016.02.05 |
---|---|
[Android TelephonyManager] 안드로이드에서 폰 정보를 사용하기 (0) | 2016.02.05 |
이클립스로 안드로이드 앱 개발 시 멈춤 현상 해결 (0) | 2016.02.05 |
안드로이드 구글맵 Couldn't get connection factory client 에러 (0) | 2016.02.05 |
안드로이드 Layout 쉽게 만들어주는 프로그램 (droiddraw) (0) | 2016.02.05 |
Comments