如果这个问题已经得到回答,我很抱歉,我搜索了很多,但我找不到任何问题。
我正在编写一个从 Internet 数据库获取数据的 Android 应用程序。我的第一个 Activity 从数据库中检索数据,然后我尝试将对整个数据库的引用传递给另一个 Activity 。
它简要地看起来像这样:
//server is wrapper class for my database connection/ data retrieving
Server server = new Server(...connection data...);
server.connect();
server.filldata();
然后我尝试将其传递给另一个 Activity
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("server", server); //server, and all implements Serializable
startActivity(intent);
在此之后我得到一个 java.lang.reflect.InvocationTargetException 没有解释,问题可能是什么。
如果您知道将对象(除了 int、string...)传递给另一个 Activity 的方法,请帮助我!
最佳答案
您的类 Server
应该实现接口(interface) Parcelable
以便其对象通过 bundle 传输。
参见下面的示例,可用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();
}
}
关于Android Intent putExtra(String, Serializable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094457/