1

私はこの質問をしています: 文字列や int などを与える代わりに、新しいインテントの作成中にカスタム オブジェクトをプッシュできますか?

newActivity.PutExtra("JsonDataResult", business.getJSON());

実際、JSON (webrequest から) のおかげで 1 つのオブジェクトを構築し、それを解析してオブジェクトに配置しました。

この時点で、webrequest から返された文字列を別のインテントに渡していますが、解析には長い時間がかかるため、カスタム オブジェクトをインテントで渡す機能は非常に優れている可能性があります。

編集:モノドロイド/ xamarinを使用しているので、

Android.OS.IParcelable は実装できず、Java.IO.ISerializable は実装できません。

4

3 に答える 3

2

カスタムクラスを実装させることができますParcelable(Googleはその方が速いと言いますが、より多くのコーディングを行う必要があります)または Serializable. 次に、オブジェクトをバンドル (または「追加」) に追加します。

Bundle b = new Bundle()
b.putParcelable("myObject",myObject);
b.putSerializable("myObject",myObject);

これParcelableをチェックアウトするための情報については

と の違いに興味がある場合はParcelableこちらSerializableをご覧ください。

Serializableコードがそれほど多くのコードで台無しにされていないため、私は個人的に単純なオブジェクトの受け渡しに を使用することを好みます。

編集:あなたの質問はこれに非常に似ていませんか?

于 2013-04-18T13:08:46.147 に答える
0

これは、Parcelable クラスを作成する方法の例です。

public class Person implements Parcelable { 
    private String name;
    private String surname;
    private String email;
        // Get and Set methods

    @Override
    public int describeContents() {
         return hashCode();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeString(surname);
        dest.writeString(email);
    }

 // We reconstruct the object reading from the Parcel data
    public Person(Parcel p) {
        name = p.readString();
        surname = p.readString();
        email = p.readString();
    }
    public Person() {}

   // We need to add a Creator

 public static final Parcelable.Creator<person> CREATOR = new Parcelable.Creator<person>() {

    @Override
    public Person createFromParcel(Parcel parcel) {  
       return new Person(parcel);
    }

    @Override
    public Person[] newArray(int size) {  
       return new Person[size];
    }
};

Parcelable を使用する場合は、こちらをご覧ください。

于 2013-04-18T13:21:57.897 に答える