2015-10-03 27 views
0

我是新手,所以我很抱歉,如果這是一個明顯的錯誤。當我的應用程序運行帶有WebView的選項卡時,只會返回空白。有沒有人看到錯誤?WebView在片段中是白色的

Tab2.java:

public class Tab2 extends Fragment { 




@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    String url="http://google.co.uk/"; 
    View v = inflater.inflate(R.layout.tab_2, container, false); 

    View rootView = inflater.inflate(R.layout.tab_2, container, false); 

    WebView mWebView = (WebView) rootView.findViewById(R.id.webView); 

    mWebView.setWebViewClient(new WebViewClient()); 
    mWebView.loadUrl(url); 


    return v; 
} 

} 

tab_2.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#424242"> 


<WebView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/webView" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="false" 
    android:layout_alignParentEnd="false" 
    android:layout_alignParentTop="true" /> 
</RelativeLayout> 
+0

嘗試加載的網頁視圖中onActivityCreated –

+0

發表您的清單 –

回答

0

確保你已經爲清單中的訪問互聯網的權限。

<uses-permission android:name="android.permission.INTERNET" /> 
+0

我已經有了這一點。 – ackel006

0

這是我的工作代碼。希望它可以幫助你 - 片段 -

... 
     @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) { 
       View rootView = inflater.inflate(R.layout.fragment_friends, container, false); 

       final WebView webview = (WebView) rootView.findViewById(R.id.webview); 
       webview.setWebViewClient(new MyWebViewClient()); 
       webview.getSettings().setBuiltInZoomControls(false); 
       webview.getSettings().setSupportZoom(false); 
       webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
       webview.getSettings().setAllowFileAccess(true); 
       webview.getSettings().setDomStorageEnabled(true); 
       webview.loadUrl(URL); 

     // Using to refresh webpage when user swipes the screen 
       mSwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.swipeRefreshLayout); 
       mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
        @Override 
        public void onRefresh() { 
         new Handler().postDelayed(new Runnable() { 
          @Override 
          public void run() { 
           mSwipeRefreshLayout.setRefreshing(false); 
           webview.reload(); 
          } 
         }, 3000); 
        } 
       }); 


       // Inflate the layout for this fragment 
       return rootView; 
      } 
    public class MyWebViewClient extends WebViewClient { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return super.shouldOverrideUrlLoading(view, url); 

      } 
     } 

     @Override 
     public void onAttach(Activity activity) { 
      super.onAttach(activity); 
     } 

     @Override 
     public void onDetach() { 
      super.onDetach(); 
     } 
... 

而且我XML是 -

... 
<android.support.v4.widget.SwipeRefreshLayout 
     android:id="@+id/swipeRefreshLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <WebView 
      android:id="@+id/webview" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </android.support.v4.widget.SwipeRefreshLayout> 
... 

另外,不要忘了添加清單許可 -

<uses-permission android:name="android.permission.INTERNET" /> 
1

試試這個代碼。

public class Tab2 extends Fragment { 

     public final static String TAG = Tab2.class.getSimpleName(); 

     public Tab2() { 
      // TODO Auto-generated constructor stub 
     } 



     public static Tab2 newInstance() { 
      return new Tab2(); 
     } 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setRetainInstance(true); 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      return inflater.inflate(R.layout.tab_2, container, false); 



     } 

     @Override 
     public void onViewCreated(View view, Bundle savedInstanceState) { 
      super.onViewCreated(view, savedInstanceState); 
      final WebView webView = (WebView) view.findViewById(R.id.webView); 

      webView.setWebViewClient(new WebViewClient()); 
      webView .getSettings().setJavaScriptEnabled(true); 
      webView .getSettings().setDomStorageEnabled(true); 
      webView.loadUrl("http://google.co.uk/"); 
      Toast.makeText(getActivity(),"Loading WebView",Toast.LENGTH_LONG).show(); 
      webView.setWebViewClient(new WebViewClient() { 
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
        webView.loadUrl("file:///android_asset/error.txt");//show text file if no internet 

       } 
      }); 
     } 
    } 

我的代碼和代碼之間的區別是,我使用onViewCreated加載您使用onCreateView網址。

順便說一下,爲什麼你使用兩個充氣器來充氣相同的東西?

View v = inflater.inflate(R.layout.tab_2, container, false); 
View rootView = inflater.inflate(R.layout.tab_2, container, false);