2011-03-17 146 views
0

我有以下三個類。可返回數據返回空值

板球

public class Cricketers implements Parcelable { 

     private String name; 
     private String address; 
     private int age; 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public String getAddress() { 
      return address; 
     } 

     public void setAddress(String address) { 
      this.address = address; 
     } 

     public int getAge() { 
      return age; 
     } 

     public void setAge(int age) { 
      this.age = age; 
     } 


     @Override 
     public int describeContents() { 
      return 0; 
     } 

     public Cricketers() { 
     } 

     @Override 
     public void writeToParcel(Parcel dest, int flag) { 
      dest.writeString(name); 
      dest.writeString(address); 
      dest.writeInt(age); 
     } 

     public Cricketers(Parcel in) { 
      this.name = in.readString(); 
      this.address = in.readString(); 
      this.age = in.readInt(); 
     } 

     @SuppressWarnings("unchecked") 
     public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
      public Cricketers createFromParcel(Parcel in) { 
       return new Cricketers(in); 
      } 

      public Cricketers[] newArray(int size) { 
       return new Cricketers[size]; 
      } 
     }; 
    } 

活性1

public class Activity1 extends Activity { 

    private ArrayList<Cricketers> cricketers; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     cricketers = new ArrayList<Cricketers>(); 

     Cricketers object = new Cricketers(); 
     object.setName("Sachin"); 
     object.setAddress("Mumbai"); 
     object.setAge(37); 
     cricketers.add(object); 

     Cricketers object1 = new Cricketers(); 
     object1.setName("Sourav"); 
     object1.setAddress("Kolkata"); 
     object1.setAge(38); 
     cricketers.add(object1); 

     Cricketers object2 = new Cricketers(); 
     object2.setName("Dravid"); 
     object2.setAddress("Bengaluru"); 
     object2.setAge(38); 
     cricketers.add(object2); 

     Intent intent = new Intent(this, Activity2.class); 
     intent.putExtra("cricketers", cricketers); 
     startActivity(intent); 

     cricketers = null; 

    } 

活性2

public class Activity2 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent intent = getIntent(); 
     Bundle bundle = intent.getExtras(); 

     Cricketers cricketers = bundle.getParcelable("cricketers"); 

    } 

} 

我檢索DA ta在Activity2上,但它的返回玩板=空。

在Activity1類中,將數據「板球員」正確地添加到意圖。

請提供您的輸入。

在此先感謝。

回答

0

我已經解決了這個問題....

變化需要做的活性2

public class Activity2 extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     ArrayList<Cricketers> data = new ArrayList<Cricketers>(); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent intent = getIntent(); 
     Bundle bundle = intent.getExtras(); 

     data = bundle.getParcelableArrayList("cricketers"); 

     for (int count = 0; count < data.size(); count++) { 

      Cricketers cric = (Cricketers) data.get(count); 
      String name = cric.getName(); 
      String address = cric.getAddress(); 
      int age = cric.getAge(); 
     } 
    } 
} 
0

我發現了一些問題,AIDL緩存...如果你改變所有代碼放棄可說明的內容,或簡單地重構類的名稱。如果您重新安裝應用程序或清除應用程序緩存,則AIDL仍在工作並正在搜索重構的類。

我修復了此任務,重新啓動設備。這是一個可以改變parcelable類中的代碼但在重新安裝應用程序時看不到它的作用,你必須重新啓動設備......或者那是我自己做的。

感謝您的例子夥計;)activit2是一個保佑!