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 |
Tags
- 포켓볼
- setting
- 앱스토어
- loop
- Example
- swift3
- IOS
- 스마트폰
- 신도림
- UITableView
- push
- Xcode
- LG유플러스
- 아이폰7
- error
- swift
- afterdelay
- 포켓몬 GO
- 얻는법
- simulator
- 샘플
- Check
- 신도림 테크노마트
- 페이백
- 보라카이
- 공략
- 해몽
- UIView
- Bitcode
- GCD
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