2012-03-13 3 views
0

私の現在のモノドロイドプロジェクトには2つの問題があります.1つはAssetsからの読み込みであり、もう1つは生成されたWebページが表示され、それらの相互関連性が原因です。WebViewと資産の問題

資産の問題は十分に簡単で、ファイルが見つかりません。現在のコードは次のようになります

Android.App.Application.SynchronizationContext.Post(delegate 
{ 
    string uri = "file:///android_asset/StyleSheet.css"; 
    string settings = string.Empty; 

    using (var input = c.Assets.Open(uri)) 
    using (StreamReader sr = new System.IO.StreamReader(input)) 
    { 
     settings = sr.ReadToEnd(); 
    } 

    string CSS = "<html><head><style>" + settings + "</style></head><body style='height:600px;background: url(Back-AQHA.jpg)' >"; 
    retStr = CSS + tableData.Content + "</body></html>"; 
    callback(retStr); 
}, null); 

これは、ファイルが見つからないため、sr.ReadToEnd()行で消滅します。私は、資産のディレクトリにアクセスして読み込むことができるようにするためにすべての権限が正しく設定されている。

Cは、ファイルが読み込まれ、戻されていたと仮定して、方法今

に渡されただけでコンテキストです呼び出し側に、それは今(アプリ内でページを生成し、それをバック渡すことでこれをテストして)表示されないコンテンツが渡され、レンダリングされた場合...ウェブビューアコードは、標準

public class webservice_webview : Activity 
{ 
    WebView web_view; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.webview); 
     string res = base.Intent.GetStringExtra("content"); 
     if (res.Length > 0) 
     { 
      web_view = FindViewById<WebView>(Resource.Id.webviewer); 
      web_view.Settings.JavaScriptEnabled = true; 
      web_view.LoadData(res, "text/html", null); 
      web_view.SetWebViewClient(new websiteviewClient()); 
     } 
     else 
      return; 
    } 

    private class websiteviewClient : WebViewClient 
    { 
     public override bool ShouldOverrideUrlLoading(WebView view, string url) 
     { 
      view.LoadData(url, "text/html", null); 
      return true; 
     } 
    } 

    public override bool OnKeyDown(Android.Views.Keycode keyCode, Android.Views.KeyEvent e) 
    { 
     if (keyCode == Keycode.Back && web_view.CanGoBack()) 
     { 
      web_view.GoBack(); 
      return true; 
     } 

     return base.OnKeyDown(keyCode, e); 
    } 
} 
} 

を取れていますその結果はすべて、urlデータ; text/html; null、[generated html]が移動したか、またはなくなったというデッドWebページです。生成されたページを表示するにはどうすればよいですか?あなたの資産をチェックする価値があるかもしれません

おかげ

ポール

答えて

0

は、資産フォルダにあり、プロパティでマークされている「AndroidAsset」としてペイン - また、大文字と小文字が正しいことを確認してください。あなたは、読み込みと最初のHTMLテキストを操作したいならばhttps://github.com/slodge/mobile-samples/blob/master/MWC/MWC.Droid/Views/About/AboutXamarinView.cs

から

 var web = FindViewById<WebView>(Resource.Id.AboutWebView); 
     web.LoadUrl("file:///android_asset/About/index.html"); 

:彼らはその後、あなただけのようなコードを使用してのWebViewへの直接の資産を渡すことができていると仮定すると、

コード:Assets.Open("About/index.html")のように試してください。

2番目のサンプルでは、​​web_view.LoadData(res, "text/html", null);のコードが正しいように見えますが、その場合、ロジックがShouldOverrideUrlLoadingの内部でどうなっているのかわかりません。