AndroidRuntime hatası: Parcel: değer sıralanamıyor


109

Intent.puExtra işlevini kullanarak bir HashMap'i yeni bir etkinliğe geçirmeye çalışıyorum. Hata ayıklayıcıda adım adım HashMap'e sorun eklemiyor gibi görünüyor, ancak startActivty () çağrıldığında Parcel: com.appName.Liquor değerini sıraya koyamadığını belirten bir çalışma zamanı hatası alıyorum.

Likör, oluşturduğum özel bir sınıf ve bir HashMap ile birlikte soruna neden olduğuna inanıyorum. HashMap'im yerine bir dize geçirirsem, bir sonraki etkinliği sorunsuz yükler.

Ana aktivite

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);

Likör Sınıfı

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);
}
}

Alt Aktivite

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);

Çalışma zamanı hatası olduğunda, onu asla alt aktivite sınıfına almaz. Bu yüzden HashMap'in amaca eklenmesinde sorunun var olduğundan oldukça eminim ve hataya dayanarak Liquor sınıfımın neden olduğuna inanıyorum, ancak nedenini anlayamıyorum.

Yardımınız çok takdir edilecektir. Teşekkürler!

Yanıtlar:


274

Sizin HashMapde serileştirilebilir ancak Bottlesınıf serileştirilebilir mi? Değilse, serileştirmez ve çalışma zamanında hatalar atar. Make Bottlesınıf uygulamak java.io.Serializablearabirimi


5
Teşekkürler, hem Likör hem de Şişe sınıflarına Serileştirilebilir aletler eklemek zorunda kaldım.
Jared

2
işe yarıyor .. Bottle sınıfında Serializable uygulamam gerekiyor. Teşekkürler @naikus
Ashokchakravarthi Nagarajan

177
İçki her zaman suçludur :))
Cezar Alexandru Vancea

3
Benim için çalıştı :)
Jacky

1
Çalışıyor, ancak Serileştirmenin bununla ne ilgisi var kafam karıştı. Android, nesneleri periyodik olarak serileştirmeye ve seriyi kaldırmaya devam ediyor mu? Ve hangi durumlarda Serileştirilebilir arabirimi uygulamam gerekir (burada olduğu gibi)?
Reeshabh Ranjan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.