2012-03-20 1 views
6

私は、上書きされたOnSaveInstanceStateでバンドルに値を入れるのに苦労しています。私は、アクティビティの再起動時にいくつかのクラスオブジェクトを保存する必要があります。つまり、それらは分割可能でなければならず、モノドイドロイドに実装することは不可能です。単体で分かりやすいオブジェクトをバンドルする

出典:http://docs.xamarin.com/android/about/limitations

私はparcelableせずに、バンドルに、これらのクラスのオブジェクトを保存するために何ができますか?私はサーバーからデータをロードします。たとえば、ユーザーのローテーションで再度OnCreateメソッドを呼び出すなどしてはいけません。したがって、それらを保存しておくといいでしょう。これは、サーバが時々のローテーションなどにいくらかのプレッシャーをかけないようにします。

答えて

5

この質問の当初受け入れられた回答は、答えられた時点で当てはまりましたが、もはや当てはまりません。

私はもともと上記の提案を実施していたし、後にもっとこれを見つけたサーチして:

http://dan.clarke.name/2012/09/implementing-iparcelable-in-mono-for-android/

機能がサポートされるようになりましたし、上記のリンクは、それを実装する方法についての素晴らしいリソースです。

+0

最後にMonodroidでParcelableをサポートしているようですが、これは正解です。 –

4

インターフェイスをAndroid用のMonoに実装することはできません。 the docsから撮影:

android.os.Parcelableインターフェースが必要なため、IParcelableインタフェースは、この時点で実装することはできません。Parcelableインタフェースを実装

  • クラスはまた、CREATORという静的フィールドを持っている必要がありますこれは、
    Parcelable.Creatorインターフェイスを実装するオブジェクトです。

現在、mandroid.exeはフィールドを生成できないため、このインターフェイス は実装できません。サポートは将来のリリースで追加される予定です。

サブクラスがApplicationのように、オブジェクトをアクティビティの外部に格納することもできます。静的プロパティを使用してアプリケーションクラスにデータを格納することも、アクティビティのApplicationプロパティを使用してインスタンスプロパティ/メソッドにアクセスすることもできます。アプリケーションの使用に関する詳細はthis questionにあります。

+0

このケースでは静的変数を使用していましたが、クリアしてくれてありがとう –

+1

ドキュメントが更新されていると思われますが、これがサポートされているはずです(「以前のバージョンの4.1リリースに適用されます。 ExportAttributeとExportField属性を使用して、明示的に名前を付けることのできるJavaメソッドとフィールドを生成します。私は今すぐそれを打ち、肯定的な発見を投稿するつもりです。 – samosaris

+1

Xamarinの公式の例:https://github.com/xamarin/monodroid-samples/blob/master/ExportAttribute/ExportAttributeTest/MainActivity.cs – samosaris

関連する問題