2016-09-13 14 views
0

私はXamarinでかなり新しく、Android/iOS用のアプリを作ろうとしています。私はputExtraでクラスを送信しようとしていますので、ISerializableインターフェイスを追加してSerializableクラスを作成しようとしましたが、そのときにHandle()メソッドとDispose()メソッドを実装する必要があります。私はそれらのメソッドで何をすべきか分からないので、NotImplementedExceptionを持っています。カスタムクラスをシリアル化できません

私が次のアクティビティに行くとき、私はNotImplementedExceptionを取得します(ハンドルまたは破棄の可能性が最も高い)。クラスの実装に何か問題があるかどうかを知りたいです。ここで

は(私は次のアクティビティにオーバー送信しよう)Eventクラスである:

public class Event : Object, ISerializable 
{ 
    private long id; 
    private string name; 
    private string description; 
    private double latitude = 0; 
    private double longitude = 0; 
    private User author; 
    private List<User> participants; 
    private List<EventDate> eventDates; 

    public Event(long id, string name, string description, double latitude, double longitude, User author, List<User> participants, List<EventDate> eventDates) 
    { 
     this.id = id; 
     this.name = name; 
     this.description = description; 
     this.latitude = latitude; 
     this.longitude = longitude; 
     this.author = author; 
     this.participants = participants; 
     this.eventDates = eventDates; 
    } 

    public Event(long id, string name, string description, User author) 
    { 
     this.id = id; 
     this.name = name; 
     this.description = description; 
     this.author = author; 
     this.participants = new List<User>(); 
     this.eventDates = new List<EventDate>(); 
    } 

    public long Id 
    { 
     get { return id; } 
    } 

    public string Name 
    { 
     get { return name; } 
    } 

    public string Description 
    { 
     get { return description; } 
    } 

    public double Latitude 
    { 
     get { return latitude; } 
    } 

    public User Author 
    { 
     get { return author; } 
    } 

    public List<User> Participants 
    { 
     get { return participants; } 
    } 

    public List<EventDate> EventDates 
    { 
     get { return eventDates; } 
    } 

    public IntPtr Handle 
    { 
     get 
     { 
      throw new NotImplementedException(); 
     } 
    } 

    public EventDate getBestDate() 
    { 
     EventDate bestDate = null; 
     foreach (EventDate date in eventDates) 
     { 
      if (bestDate == null || date.AvailableUsers.Count > bestDate.AvailableUsers.Count) 
      { 
       bestDate = date; 
      } 
     } 
     return bestDate; 
    } 

    public void addParticipant(User participant) 
    { 
     this.participants.Add(participant); 
    } 

    public void Dispose() 
    { 
     throw new NotImplementedException(); 
    } 
} 

私も必要なので、このクラスは、(ポータブル)のプロジェクトではなく.DroidプロジェクトでありますそれはiOSで。

誰かが私が間違っていることを教えてもらえますか、あるいは代替案を提案することができますか?

ありがとうございます。

答えて

0

ISerializableからJava.IO.ISerializableに変更があります。

https://developer.xamarin.com/api/type/Java.IO.ISerializable/

これはあなたを助けることを願っています:私は詳細については、このよう

class MySerializable : Object, Java.IO.ISerializable 
    { 
     public string Value {get; private set;} 

     public MySerializable (IntPtr handle, JniHandleOwnership transfer) 
      : base (handle, transfer) 
     { 
     } 

     public MySerializable() 
     { 
     } 

     public MySerializable (string value) 
     { 
      Value = value; 
     } 
} 

を作成している

はこれを参照してください。

+0

私はすでにJava.IO.Serializableを使用していますが、このように置くのではなく、 'Java.IOを使用しています 'のようにインポートしました。 –

+0

@DennisvanOpstal何かエラーが出ますか? – Ironman

+0

自分のコードを自分のコードに変更しても何も変わりません。私はまだNotImplementedExceptionのために私のアプリケーションをクラッシュさせるHandle()とDispose()メソッドが必要です。 –

関連する問題