0

重複の可能性:
Android であるアクティビティから別のアクティビティにオブジェクトを渡す方法

ユーザー定義のクラスオブジェクトをあるオブジェクトから別のオブジェクトに渡したいですActivityStringaを otherに渡す方法を知っていますActivity:

Intent in=new Intent(LoginActivity.this,WebserviceClient.class);
in.putExtra("res", "abc");
startActivityForResult(in, 0);

反対側でそれを抽出する方法:

Intent i = getIntent();
res = i.getStringExtra("res");

しかし、ユーザー定義オブジェクトの両側でこれを行う方法を知りたいですか?

4

5 に答える 5

1

インターフェイスにクラスを実装する必要がありParcelableます。このガイドは、複雑なオブジェクト データ構造を Intent に渡すのに役立つ場合があります

于 2012-10-22T06:31:02.033 に答える
1

クラスに実装さParcelableせて、インテント エクストラとして渡します。

于 2012-10-22T06:31:10.080 に答える
1

送信するオブジェクトのクラスをSerializableに実装します

  Intent in=new Intent(LoginActivity.this,WebserviceClient.class);
                    in.putExtra("res",objectOfClass);
                    startActivityForResult(in, 0);

反対側を抽出する

 Bundle extraData = getIntent().getExtras();
        if (extraData != null) {
            objectOfClass = (Classname) extraData
                    .getSerializable("res");
        }
于 2012-10-22T06:31:22.140 に答える
1

私のクラスを使用して、パーセル可能なオブジェクトを作成する必要がある別のアクティビティにオブジェクトを渡すことができますが、Bean クラスがここでパーセルを実装していることを確認してください。

/**
         * A method to create pacelable{@link Parcelable} object
         * @param album
         * @return
         */
        public  ParcelHashMap parseObject(CategoryBean mCategoryBean){
            ParcelHashMap p = new ParcelHashMap();
            p.put("CategoryBean", mCategoryBean);
            return p;
        }

Activity1 から意図的に渡す

Intent in=new Intent(Activity1.this,Activity2.class);
in.putExtra("myCatObject", parseObject(selectedCategoryObject));
startActivity(in);

そして secondActivity では、その parcelabel オブジェクトを渡して、以下のような実際のオブジェクトを取得します

    /**
     * To get parsed object from Parcelable object, you can use int,string or any object
     * @param parsedObje Parcelable
     * @return PhotosBean Object
     */
    public  CategoryBean parseObject(Parcelable parsedObje){
        return (CategoryBean)((ParcelHashMap)parsedObje).get("CategoryBean");
    }

小包のクラス

パッケージcom.ixorian; java.util.HashMap をインポートします。

import android.os.Parcel;
import android.os.Parcelable;

public class ParcelHashMap implements Parcelable {
    private HashMap<String,Object> map;

    public ParcelHashMap() {
        map = new HashMap<String,Object> ();
    }

    public ParcelHashMap(Parcel in) {
        map = new HashMap<String,Object> ();
        readFromParcel(in);
    }

    public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
        public ParcelHashMap createFromParcel(Parcel in) {
            return new ParcelHashMap(in);
        }

        public ParcelHashMap[] newArray(int size) {
            return new ParcelHashMap[size];
        }
    };

//  @Override
    public int describeContents() {
        return 0;
    }

//  @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(map.size());
//      for (String s: map.keySet().toArray(new String[0])) {
//          dest.writeString(s);
//          dest.writeString((String) map.get(s));
//      }

         for (HashMap.Entry<String, Object> entry : map.entrySet()) {  
             dest.writeString(entry.getKey());  
             dest.writeValue(entry.getValue());  
             }  
    }

    public void readFromParcel(Parcel in) {
        int count = in.readInt();
        for (int i = 0; i < count; i++) {
            map.put(in.readString(), in.readValue(ParcelHashMap.class.getClassLoader()));
        }
    }

    public Object get(String key) {
        return (Object) map.get(key);
    }

    public void put(String key, Object value) {
        map.put(key, value);
    }
}
于 2012-10-22T07:40:32.117 に答える
0

Andriod アクティビティ間でカスタム オブジェクトを渡すために従う簡単な方法は、アクティビティ間で渡す必要があるすべてのオブジェクトと変数を含むシングルトン クラスをプロジェクトで定義することです。アクティビティからカスタム オブジェクトを渡したいとします。 A-->B では、渡したいオブジェクト テンプレートを含む Singleton クラスを定義し、アクティビティ A でセッター メソッドを呼び出し、アクティビティ B でゲッター メソッドを呼び出すだけです。

于 2012-10-22T09:55:32.517 に答える