如果这个问题已经得到解答,我很抱歉,我搜索了很多,但我找不到任何问题。
我正在编写一个从互联网数据库获取数据的Android应用程序。我的第一个活动从数据库中检索数据,并尝试将对整个数据库的引用传递给另一个活动。
它简要地看起来像这样:
//server is wrapper class for my database connection/ data retrieving
Server server = new Server(...connection data...);
server.connect();
server.filldata();
然后我尝试将此传递给另一个活动
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("server", server); //server, and all implements Serializable
startActivity(intent);
在此之后我得到一个没有解释的java.lang.reflect.InvocationTargetException,问题可能是什么。
如果您知道将对象(int,string ...除外)传递给另一个活动的方法,请帮助我!
答案 0 :(得分:2)
您的班级Server
应该实现接口Parcelable
,以便通过捆绑包传输其对象。
请参阅下面的示例,该示例可用here:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
答案 1 :(得分:0)
对于需要通过Bundle传递的任何对象,必须实现 Parcelable 或 Seralizable interface.Intent提供两个接口:
putExtra(String name, Parcelable value)
putExtra(String name, Serializable value)
https://developer.android.com/reference/android/content/Intent.html
但建议使用Parcelable,因为它是专门为Android编写的,本质上是轻量级的。