2017-06-29 19 views
1

私は現在、クロスプラットフォームのアプリ を開発する方法を学んでいる私は、バグに出くわし、それはバグか だ場合、私は知らないが、私は示すよう機能GetStringAsyncを使用しようとすると、下の画像 に誰かが助けてくれるとエラーが発生しますか?ここ XamarinクロスプラットフォームPCL GetStringAsyncエラー

は私がNuget Microsoft.Net.Http を通って、Androidのプロジェクトのために、私はちょうどあなたがしたい場合ことを実現 System.Net.Http

を追加した追加したPCLプロジェクトのコード

protected override async void OnAppearing() 
{ 
    var client = new HttpClient(); 
    string a =await client.GetStringAsync("https://jsonplaceholder.typicode.com/posts"); 

    base.OnAppearing(); 
} 

ですあなたのアンドロイドプロジェクトにMicrosoft.Net.Http をダウンロードしてください。Microsoft.bcl.Build をダウンロードする必要があります。まず、私はそれを行いましたが、それでも問題は解決しません。

+4

あなたのポストにコードやエラーメッセージは含まれていませんでした。どうすればあなたを助けてくれるのでしょうか?そして、画像として投稿しないでください。 – Jason

答えて

1

async voidは、イベントハンドラで使用できます。しかし、OnAppearingはイベントハンドラではありません。これは、ページの基本クラスの仮想メソッドです。しかし、良いことはOnAppearingメソッドが実際にAppearingイベントの前に呼び出されるということです。

OnAppearingメソッドのページ/ビューのAppearingイベントを購読します。

protected override void OnAppearing() { 
    this.Appearing += Page_Appearing; 
} 

そして、後で呼び出される実際の偶数ハンドラで非同期コードを呼び出します。

HttpClient client = new HttpClient(); 
private async void Page_Appearing(object sender, EventArgs e) { 
    //...call async code here 
    var url = "https://jsonplaceholder.typicode.com/posts"; 
    var a = await client.GetStringAsync(url); 

    //unsubscribing from the event 
    this.Appearing -= Page_Appearing; 
} 
関連する問題