1

如果这个问题已经得到解答,我很抱歉,我搜索了很多,但我找不到任何与我的问题有关的问题。

我正在编写一个从互联网数据库获取数据的安卓应用程序。我的第一个活动从数据库中检索数据,我尝试将整个数据库的引用传递给另一个活动。

它简要地看起来像这样:

//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...除外)传递给另一个活动的方法,请帮帮我!

4

2 回答 2

2

您的类Server应该实现接口Parcelable,以便通过捆绑传输其对象。

请参阅下面的示例,该示例可在此处获得:

 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();
     }
 }
于 2012-04-10T19:50:44.103 回答
0

For any object which needs to be passed via Bundle must implement the Parcelable or Seralizable interface.Intent provides both the interfaces:

putExtra(String name, Parcelable value)
putExtra(String name, Serializable value)

https://developer.android.com/reference/android/content/Intent.html

But it is advisable to use Parcelable as it is written specifically for Android and is light-weight in nature.

于 2017-06-09T07:02:52.513 回答