2012-08-25 2 views
1

나는 ActivityB로 경로를 그리고 ActivityA로 돌아 가면 클리핑 된 사진을 얻을 수있는 "그리기와 같은"프로젝트를 수행하고 있습니다. 다음 번에 다시 편집 할 수 있도록 저장할 수 있습니다.액티비티간에 Point 배열을 전달하고 SQLite에 저장하는 가장 좋은 방법

사용자가 가져 오는 가장 중요한 정보는 (x, y) 점이 전달/저장되어야합니다. 두 개의 float 배열을 사용하여 값을 저장하고이를 ActivityA에 추가로 전달합니다.

intent.putExtra("EXTRA_X", xPoints); 
intent.putExtra("EXTRA_Y", yPoints); 

SQLite는에 저장 I SQLite는 배열 저장을 지원하지 않기 때문에, 플로트 []로 변환 두 문자열을 저장 (플로트 []의 양이 500 제한된 크기를 갖는다).

private String floatArrToStr(float[] arr) { 
    StringBuilder s = new StringBuilder(); 
    for (int i = 0 ; i < length ; i++) { 
     s.append(arr[i]); 
     s.append(","); 
    } 
    return s.toString(); 
} 

제 질문은 이것이 포인트를 전달하고 저장하는 가장 좋은 방법입니까? Parcelables를 더 잘 사용합니까 (Android: Pass List<GeoPoint> to another Activity)?

답변

0

Serializable을 여러 활동에 전달할 수 있습니다.

Class PathPoint implements Serializable { 
    public float x; 
    public float y; 
} 

다음 ArrayList<PathPoint>도 직렬화하는 Bundle 넣고 통해 전송 될 수있다.

+0

내가 아는 한 'Serializable'은 JAVA에서는 표준이지만 효율 때문에 안드로이드에 적합하지 않다. – tddian

+0

[객체 직렬화 대신 Parcelable 사용의 이점] (http://stackoverflow.com/a/5551155/1390612) – tddian

+0

@tiddan 동일한 링크에서 인용 : "Parcelable은 활동에 전달 될 의도가 없습니다." –

관련 문제