それは希望:
私は別の活動からのJava Socketオブジェクトを渡したいです。私は渡すためParcelableを使用するのではと思ったが、小包にオブジェクトを追加することはできません
public class NetworkInformation implements Parcelable {
private String ipAddress;
private String portNo;
private Socket networkSocket;
protected NetworkInformation(Parcel in) {
}
public static final Creator<NetworkInformation> CREATOR = new Creator<NetworkInformation>() {
@Override
public NetworkInformation createFromParcel(Parcel in) {
return new NetworkInformation(in);
}
@Override
public NetworkInformation[] newArray(int size) {
return new NetworkInformation[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(ipAddress);
dest.writeString(portNo);
//How to add the Socket to parcelable here ?
}
}
ケン・バローズ:
私は確かにこれが機能するかどうかないんだけど、あなたは試してみてください:
private String ipAddress;
private String portNo;
private Socket networkSocket;
protected NetworkInformation(Parcel in) {
ipAddress = in.readString();
portNo = in.readString();
networkSocket = new Socket(makeRealIP(ipAddress),makeRealPortNo(portNo));
}
もちろん、あなたが戻って()は、新しいソケットのために有用なパラメータに文字列を変換するために、独自のmakeRealIPとmakeRealPortNoを記述する必要があります。
Bundle myBundle = new Bundle();
NetworkInformation myNetworkInfo;
myBundle.putParceable("myNetworkInfo",myNetworkInfo);
myNetworkInfo = (NetworkInformation)myBundle.getParceable("myNetworkInfo");
私はこれを試していませんでした、と私はソケット層で周りいじくるについて警告するのは非常に正しかった答え、他の人々を賭けます。それは少しトリッキー得ることができます。幸運を。