2016-03-27 13 views
0

Hata [şimdiki] tek bir sınıfı Fault_Page etkinliğine aktarmaya çalışıyorum. Ama Parcelable ben benzer sorunları ve bunların cevapları arandıBaşka bir etkinliğe göndermek için tek bir dizi sınıf dizisini serileştirmek mümkün mü?

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Select_Click(); 
     } 
    }); 
public void Select_Click(){ 
    Intent FaultPage=new Intent(this,Fault_Page.class); 
    Fault send=Faults[current_swap]; 
    FaultPage.putExtra("FaultClass", send); 
    startActivity(FaultPage); 
} 
int fault_number=15; 
class Fault implements Serializable{ 
    public String fault_name="Not known"; 
    public int L_number=0,T_number=0; 

    public void Record(){};//currently empty functions 

    public void Save(){}; 

    public void Delete(){}; 
} 
Fault[] Faults; 
Faults=new Fault[15]; 
    for(int i=0;i<Faults.length;i++){ 
     Faults[i]=new Fault(); 
    } 

IOException OnCreate fonksiyonunda burada en java.io.NotSerializableException

neden serilestirilebilir nesneyi yazma karşılaştı

karşılaştı. Ancak, çoğunlukla meydana gelen fay, iç sınıfa sahip olmaksızın uygulanmaktaydı, ki bu benden farklıydı. MainActivity sınıfımı bile Serializable olarak değiştirdim. Ancak yine de StartActivity işlevinde hata oluşuyor. Dizeler serileştirilebilir mi? ya da başka bir şey eksik mi?

+0

Evet, Dize serileştirilebilir. Bence sorun, Parcelable Objects taşıyabilir. Neden "Class Fault Parcelable" özelliğini dönüştürmeyi denemiyorsunuz? –

cevap

2

Sorun, Fault iç sınıfınızın static bildirilmemesi nedeniyle ortaya çıkar.

Bir iç sınıfın her zaman kendi kapalı sınıfına dolaylı bir başvurusu vardır, bu nedenle iç sınıf örneği serileştirildiğinde, onun sınıflandırma örneği örneği de serileştirilmelidir. Ve bahse girerim, sınıflandırma sınıfı Serializable'u uygulamıyor. Sorun yok; yine de istemezdin.

Eğer sadece bu gibi Fault ilan edebilir, gitmemiz için:

static class Fault implements Serializable { 

sen NotSerializableException geçmiş olsun edeceğimizi.