(C#)Xamarin.android片段Webview没有显示任何内容

时间:2018-04-07 09:12:29

标签: c# android xamarin xamarin.android

在我的多标签应用程序中的一个片段中,我有一个不会显示任何内容的webview。我可能只是代码错了,所以这里是axml文件(fragment1.axml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <android.webkit.WebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/webView" />
</LinearLayout>

这里是cs文件(fragment1.cs):

using Android.OS;
using Android.Support.V4.App;
using Android.Views;
using Android.Webkit;

namespace TabsApp.Fragments
{
    public class Fragment1 : Fragment
    {
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Create your fragment here
        }

        public static Fragment1 NewInstance()
        {
            var frag1 = new Fragment1 { Arguments = new Bundle() };
            return frag1;
        }


        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            var ignored = base.OnCreateView(inflater, container, savedInstanceState);

            View v = inflater.Inflate(Resource.Layout.fragment1, container, false);

            WebView webView = v.FindViewById<WebView>(Resource.Id.webView);

            webView.LoadUrl("https://google.com");

            webView.Settings.JavaScriptEnabled = true;
            webView.SetWebViewClient(new WebViewClient());

            return inflater.Inflate(Resource.Layout.fragment1, null);
        }
    }
}

其他内容(如文本视图)工作正常,因此应用程序的任何其他部分都没有任何问题,并且已启用(INTERNET)权限。

2 个答案:

答案 0 :(得分:3)

这段代码:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    var ignored = base.OnCreateView(inflater, container, savedInstanceState);

    View v = inflater.Inflate(Resource.Layout.fragment1, container, false);

    WebView webView = v.FindViewById<WebView>(Resource.Id.webView);

    webView.LoadUrl("https://google.com");

    webView.Settings.JavaScriptEnabled = true;
    webView.SetWebViewClient(new WebViewClient());

    return inflater.Inflate(Resource.Layout.fragment1, null);
}

你能不能发现它有什么问题吗?

你给View v充气,你找到了你的WebView并且做了什么。但是,在您返回的最后一行。你再次充气,无视你在那种方法中做过的任何其他事情。只需返回v

答案 1 :(得分:2)

return inflater.Inflate(Resource.Layout.fragment1,null);这行代码导致问题,因为您再次膨胀视图,您已经膨胀了 这里:查看v = inflater.Inflate(Resource.Layout.fragment1,container,false);

所以只返回v; 代替

返回inflater.Inflate(Resource.Layout.fragment1,null);