可返回数据返回空值
问题描述:
我有以下三个类。可返回数据返回空值
板球
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类中,将数据“板球员”正确地添加到意图。
请提供您的输入。
在此先感谢。
答
我已经解决了这个问题....
变化需要做的活性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();
}
}
}
答
我发现了一些问题,AIDL缓存...如果你改变所有代码放弃可说明的内容,或简单地重构类的名称。如果您重新安装应用程序或清除应用程序缓存,则AIDL仍在工作并正在搜索重构的类。
我修复了此任务,重新启动设备。这是一个可以改变parcelable类中的代码但在重新安装应用程序时看不到它的作用,你必须重新启动设备......或者那是我自己做的。
感谢您的例子伙计;)activit2是一个保佑!