자바의 Object
클래스가 직렬화 가능하지 않기 때문에이 작동하지 않습니다 나를 도울 수 없습니다. 이유에 대한 설명은 this question을 참조하십시오.
Intent.putExtra()
메서드에는 serializable 인터페이스를 구현하는 형식이 필요합니다. Object는이를 구현하지 않으므로 결과적으로 작동하지 않습니다. HashMap<String,Object>
을 사용하는 대신 Serializable 인터페이스를 구현하는 특정 유형으로 오브젝트를 대체하는 것이 좋습니다. 이를 수행하는 방법은 tutorial을 참조하십시오.
당신이 전달하는 데이터가 큰 경우
업데이트는 직렬화 및 역 직렬화와 관련된 상당히 많은 오버 헤드가있을 수 있습니다. 따라서 arraylist를 저장하기 위해 Static Singleton 클래스를 사용하는 것이 좋습니다. 아래의 코드 샘플은 당신이 구현할 수있는 방법을 보여줍니다 여기에 참고로
public class DataStore {
private static final DataStore instance = new DataStore();
private arraylist = new ArrayList<HashMap<String,Object>>();
//Private constructor
private DataStore() {}
//Class is only accessible through this method
public static Singleton getInstance() {
return instance;
}
//Accessors for your data
private ArrayList<HashMap<String,Object>> getArrayList()
{
return arraylist;
}
private void setArrayList(ArrayList<HashMap<String,Object>> value)
{
arraylist = value;
}
}
정적 싱글에 tutorial이다.
어떤 오류가 발생합니까? hashmap의 값으로 Object를 전달하는 이유는 무엇입니까? 개체가 직렬화 할 수 없습니다. 원본 코드를 게시하십시오 – Blackbelt
@blackbelt 나는 빈 배열을 받고 있습니다! –
원본 코드를 게시 – Blackbelt