2017-07-14 37 views
0

Xamarinフォームを使用してWebビューにローカルHTMLページをロードしようとしています。 ロードするURLを取得することはできますが、私は自分のHTMLページをロードすることはできませんが、devドキュメントの基本的な例を使用しています。これはAndroid経由で行う必要があるため、IOSとWindowsについて心配はありません。WebView XamarinフォームでローカルHTMLをロード

XAML:

<WebView 
    x:Name="webviewjava"></WebView> 

背後にあるコード:

public partial class javscriptExample : ContentPage 
{ 
    public interface IBaseUrl { string Get(); } 
    public javscriptExample() 
    { 
     InitializeComponent(); 
     var source = new HtmlWebViewSource(); 

     source.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 

     webviewjava.Source = source; 
    } 
} 

プラットフォーム固有のファイル(LocalFile.cs): ただ、これはAndroidの資産として設定されている注意します。

[assembly: Dependency(typeof(LocalFiles))] 
namespace maptesting.Droid 
{ 
    public class LocalFiles: IBaseUrl 
    { 
     public string Get() 
     { 
      return "file:///android_asset/"; 
     } 

    } 
} 

アセットのフォルダの下には、Androidアセットとして設定されている「TestWebPage.html」があります。

私は問題が何であるか知っていませんが、私はデバッグを行い、ベースURLは空白に戻っています。ファイルが見つからないことを明確にするだけで、画面は単に空白になります。 また、違いがあるかどうかはわかりません。 LocalFiles.csファイルの 'IBaseUrl'に構文の強調表示はありません。だから私はそれが「見る」ことができるかどうか分からない。

アイデア?

答えて

0

WebView.BaseUrlは、ファイルの検索先をWebViewに通知します。それは "ウェブサイト"のルートフォルダです。デフォルトでは、ブラウザにはindex.htmlというファイルがロードされるので、ファイル名をindex.htmlに変更すると自動的に読み込まれるはずです。

私は、これはあまりにも可能なはずだと思う:

ここ
webviewjava.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 
webviewjava.Source = "TestWebPage.html"; 

あなたはこのファイルを検索し、ソースとしてそれを使用する」と「ファイルを検索するデフォルトの場所としてこの場所を使用」言っていますHTML "と呼びます。

+0

ありがとう、私はこれを見ます – user3355961

0

これが重要かどうかわかりませんが、回避策が見つかりました。上記のルートを取る代わりに、私は単純にこれを行いました:コードの後ろに、これだけでこれを行いました:そして、IBaseUrlコールを完全に省きました。 これは、次のように動作します。

+0

使用「UrlWebViewSource」で解決Androidのみで依存関係サービスを実際に作成し、各実装で適切な文字列を返す必要があります。 Androidの場合は "file:///android_asset/TestWebPage.html"、IOSの場合は別のものになります –

+0

Androidで動作する必要があるだけです。 – user3355961

0

私も同じ問題に苦しんでいますが、私は動作するように起こっているとはみなされません以下の方法の代わりに「HtmlWebViewSource」

var urlSource = new UrlWebViewSource(); 

string url = DependencyService.Get<IWebViewBaseUrl>().GetBaseUrl(); 


      string TempUrl = Path.Combine(url, "imprint.html"); 
      urlSource.Url = TempUrl; 
WebBrowser.Source = urlSource; 
関連する問題