Programming

AndroidRuntime 오류 : Parcel : 값을 마샬링 할 수 없습니다.

procodes 2020. 8. 27. 22:04
반응형

AndroidRuntime 오류 : Parcel : 값을 마샬링 할 수 없습니다.


intent.puExtra 함수를 사용하여 HashMap을 새 활동에 전달하려고합니다. 디버거를 단계별로 실행하면 HashMap이 문제없이 추가되는 것 같지만 startActivty ()가 호출되면 Parcel : cannot marshal value com.appName.Liquor라는 런타임 오류가 발생합니다.

Liquor는 내가 만든 사용자 지정 클래스이며 HashMap과 함께 사용하면 문제가 발생한다고 생각합니다. 내 HashMap 대신 문자열을 전달하면 다음 활동이 문제없이로드됩니다.

주요 활동

lv.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View view,
      int position, long id) {

      String cat = ((TextView) view).getText().toString();
      Intent i = new Intent(OhioLiquor.this, Category.class);
      i.putExtra("com.appName.cat", _liquorBase.GetMap());
      startActivity(i);

주류 클래스

public class Liquor
{
public String name;
public int code;
public String category;

private HashMap<String, Bottle> _bottles;

public Liquor()
{
    _bottles = new HashMap<String, Bottle>();
}

public void AddBottle(Bottle aBottle)
{
    _bottles.put(aBottle.size, aBottle);
}
}

하위 활동

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    HashMap<Integer, Liquor> map = (HashMap<Integer, Liquor>)getIntent().getSerializableExtra("com.appName.cat");

    setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, GetNames(map)));

    ListView lv = getListView();
    lv.setTextFilterEnabled(true);

런타임 오류가 있으면 하위 활동 클래스에 포함되지 않습니다. 그래서 나는 HashMap을 의도에 추가하는 데 문제가 있다고 확신하고 오류를 기반으로 Liquor 클래스가 원인이라고 생각하지만 이유를 알 수 없습니다.

귀하의 도움을 많이 주시면 감사하겠습니다. 감사!


귀하의 HashMap자체 직렬화하지만입니다 Bottle클래스의 직렬화는? 그렇지 않으면 직렬화되지 않으며 런타임에 오류가 발생합니다. 만들기 기능 Bottle클래스가 구현하는 java.io.Serializable인터페이스를

참고 URL : https://stackoverflow.com/questions/3818745/androidruntime-error-parcel-unable-to-marshal-value

반응형