마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ArrayList 값을 다른 Activiy ArrayList에 값 넘겨주기

0 추천

MainActivity에 

import java.io.Serializable;

public class MainActivity extends Activity implements OnClickListener {
 
Button listViewButton;
ArrayList<Person> m_orders = new ArrayList<Person>();
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
String[][] Temp = new String[3][2];
 
Temp[0][0] = "aaa";
Temp[0][1] = "high";
Temp[1][0] = "bbb";
Temp[1][1] = "middle";
Temp[2][0] = "ccc";
Temp[2][1] = "low";
Temp[3][0] = "ddd";
Temp[3][1] = "null";
 
ArrayList<Person> m_orders = new ArrayList<Person>();
 
Person p1 = new Person("aaa","high");
Person p2 = new Person("bbb","midle");
Person p3 = new Person("ccc","low");
Person p4 = new Person("ddd","null");
 
m_orders.add(p1);
m_orders.add(p2);
m_orders.add(p3);
m_orders.add(p4);
 
 
 
listViewButton = (Button)findViewById(R.id.listViewButton);
 
listViewButton.setOnClickListener(this);
 
 
 
 
}
 
@Override
public void onClick(View v){
Intent intent = new Intent(this, list_test.class);
intent.putExtra("m_orders", m_orders);
 
v.getContext().startActivity(intent);
 
}
@SuppressWarnings("serial")
class Person implements Serializable{
private String Name;
private String Risk;
 
public Person(String _Name, String _Risk){
this.Name = _Name;
this.Risk = _Risk;
}
 
public String getName(){
return Name;
}
 
public String getRisk(){
return Risk;
}
}
 
}
 
이렇게 선언해주고 
 
list_test.java 에서 
 
Intent intent = getIntent();
ArrayList<Person> m_orders = (ArrayList<Person>)intent.getSerializableExtra("m_orders");
 
이렇게 받아왓는데...
 
앱실행시 오류가 뜨네요... 
 
어디가 문제인지 여쭤보고자 합니다.
 
cansus (200 포인트) 님이 2014년 10월 9일 질문

1개의 답변

0 추천

ArrayList<Person> m_orders = (ArrayList<Person>)intent.getSerializableExtra("m_orders");

위 부분은 배열을 받는게 아니라 Serializable를 상속한 객체 하나를 받는 메소드입니다.

Serializable을 상속한 객체로는 배열을 intent로 넘길수 없는것 같습니다.

안드로이드에서는 보통 Serializable을 상속 안하고 문제점을 보완 한 Parcelable을 사용하고 있습니다. 

객체에 Parcelable을 상속해서 getParcelableArrayExtra 메소드를 사용하시면됩니다.

congbab (5,140 포인트) 님이 2014년 10월 9일 답변
감사합니다!!!

검색하다보니 Serializable 방식과 Parcelable 방식 둘다 검색되길래

이번엔  Parcelable 검색해서 다시 시도해보아야겠군요!
...