2011-03-17 158 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是一个保佑!