[안드로이드 예제] onSaveInstanceState() 메서드에 사용자 정의 클래스를 포함하는 Arraylist 담기 :: 소림사의 홍반장!

 onSaveInstanceState() : 화면 방향 바뀌기 전 자원 저장하는 메서드

Activity 가 죽기 전에 호출되는 메서드

 

 

1. 저장할 사용자 정의 클래스를 Serializable 인터페이스를 구현받아 생성한다.

static class Point implements Serializable {

      float x,y;

      boolean draw;

      float mStrokeWidth;

      int mStrokeColor;

      public Point(float x,float y,boolean draw,float mStrokeWidth,int mStrokeColor) {

            this.x = x;

            this.y = y;

            this.draw = draw;

            this.mStrokeColor = mStrokeColor;

            this.mStrokeWidth = mStrokeWidth;

      }                           

}//end class Point

 

 

 

 

2. onSaveInstanceState() 메서드를 오버라이딩 한다.

      // 방향이 바뀔때 호출되는 메소드(자원 저장용 메소드)

      // Activity 죽기전에 호출되는 메서드

      @Override

      protected void onSaveInstanceState(Bundle outState) {

            super.onSaveInstanceState(outState);

            outState.putSerializable("list", mDrawView.pointList);

      }

 

 

 

3. onCreate 메서드 호출시 저장한 savedInstanceState Bundle 객체를 처리한다.

@Override

      protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            mDrawView = new DrawView(this);

           

            if(savedInstanceState!=null) {

                  // 화면전환 전에 넣어주었던 pointList를 꺼내서 세팅

                  mDrawView.pointList =

                             (ArrayList<PhoroshopActivity.DrawView.Point>) savedInstanceState.getSerializable("list");

            }

            setContentView(mDrawView);

      }

 

 

 

적용 예제 전체 소스

 

 

다른 카테고리의 글 목록

Dev. 안드로이드/참고소스 카테고리의 포스트를 톺아봅니다