2017-05-01 4 views
0

私はAppクラスでリストを保存することについて先に記事を作成しました:List does not get saved when I use Application.Current.SavePropertiesAsync in Xamarin formsAppクラスを使用してイメージをXamarinフォームにローカルに格納するにはどうしたらいいですか?

そして、json実装で行うことができました。しかし、私は今ローカルにImageSourceを格納する別のタスクに直面しています。

私は現在、アプリケーションクラスを使用してImageSourceをローカルに保存しようとしていますが、アプリケーションを再起動すると保存されません。

var setImage = new PhotoResultEventArgs(App.imageData, App.imageWidth, App.imageHeight); 

photo.Source = ImageSource.FromStream(() => new MemoryStream(setImage.Image)); 
Application.Current.Properties["photo"] = photo.Source; 
await Application.Current.SavePropertiesAsync(); 

私はアプリを再起動したときにはnullを返します:

if (Application.Current.Properties.ContainsKey("photo")) 
{ 
    //i dont reach this code 
} 

は、AppクラスでImageSourceはを格納するためにとにかく何とかそれを変換してありますか私は別の解決策を探すために持っていますか?もしそうなら、私はどんなリンクにも感謝します、私が得ることができるヒント。

+1

ファイルに画像を保存して、私はいくつかのサンプルコードを発見したプロパティ – Jason

+0

における画像のPATHを保存するようなコードを実装することによって、それを保存することができます。私は今それを試し、それが動作するかどうかを確認します! –

+0

実際にそれは働いた!私はこのコードスニペットをここで使っています:https://developer.xamarin.com/recipes/ios/media/video_and_photos/save_photo_to_app_directory/ –

答えて

0

プロパティ辞書には、pageに記載されているプリミティブ値のみを含めることができます。

注:プロパティ辞書では、 のストレージのプリミティブタイプのみをシリアル化できます。一覧は は黙って失敗する可能性があります(のような他のタイプを保存しようとしています。おそらく今あなたに起こっているされているもの

を。あなたはおそらくしたいことはどこかで画像を保存し、それへのパスを保存することです。実行するにはこのXamarin.Formsの方法で、あなたはDependencyServiceを使用する必要が

、共有コード内のインターフェイスを定義し、このような何か:。

public interface IFileService 
{ 
    string SaveFile(Stream s); 
} 

そして、あなたがサポートする各プラットフォームで、このインタフェースを実装例えばiOSの場合;

[assembly: Xamarin.Forms.Dependency (typeof (FileService_iOS))] 
namespace MyApp 
{ 
    public class FileService_iOS : IFileService 
    { 
     string SaveFile(Stream s) 
     { 
      // Implement here and return the path to the saved file 
     } 
    } 
} 

あなたは今、この

Application.Current.Properties["photoPath"] = DependencyService.Get<IFileService>()?.SaveFile(myStream);