2015-12-02 25 views
-1

此代碼在Activity中正常工作,但是相同的代碼在Fragments中不起作用。它得到的ProgressDialog錯誤,不能應用,另外一個不能解析方法onBackPressed()WebView分段錯誤

public class FacebookFragment extends Fragment { 

private WebView webView; 
public FacebookFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView= inflater.inflate(R.layout.fragment_facebook, container, false); 





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

    startWebView("https://betanews.in/"); 
    return rootView; 
} 
private void startWebView(String url) { 

    //Create new webview Client to show progress dialog 
    //When opening a url or click on link 

    webView.setWebViewClient(new WebViewClient() { 
     ProgressDialog progressDialog; 

     //If you will not use this method url links are opeen in new brower not in webview 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     //Show loader on url load 
     public void onLoadResource (WebView view, String url) { 
      if (progressDialog == null) { 
       // in standard case YourActivity.this 
       progressDialog = new ProgressDialog(FacebookFragment.this); 
       progressDialog.setMessage("Loading..."); 
       progressDialog.show(); 
      } 
     } 
     public void onPageFinished(WebView view, String url) { 
      try{ 
       if (progressDialog.isShowing()) { 
        progressDialog.dismiss(); 
        progressDialog = null; 
       } 
      }catch(Exception exception){ 
       exception.printStackTrace(); 
      } 
     } 

    }); 

    // Javascript inabled on webview 
    webView.getSettings().setJavaScriptEnabled(true); 

    // Other webview options 
    /* 
    webView.getSettings().setLoadWithOverviewMode(true); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    webView.setScrollbarFadingEnabled(false); 
    webView.getSettings().setBuiltInZoomControls(true); 
    */ 

    /* 
    String summary = "<html><body>You scored <b>192</b> points.</body></html>"; 
    webview.loadData(summary, "text/html", null); 
    */ 

    //Load url in webview 
    webView.loadUrl(url); 


} 

// Open previous opened link from history on webview when back button pressed 


@Override 
// Detect when the back button is pressed 
public void onBackPressed() { 
    if(webView.canGoBack()) { 
     webView.goBack(); 
    } else { 
     // Let the system handle the back button 
     super.onBackPressed(); 
    } 

} 

} 
+0

使用getActivity(),而使用片段放置對話框。 –

回答

0
  1. progressDialog = new ProgressDialog(getActivity());

我們需要傳遞一個背景替換該行progressDialog = new ProgressDialog(FacebookFragment.this);到ProgressDialog的構造函數,FacebookFragment.this將返回對象片段,但預期的對象是活動,您可以獲得上下文的持有活動。

  • onBackPressed()是從類活動方法,但在這裏要擴展片段
  • 覆蓋此方法,你實際上膨脹該片段。並檢查你需要的片段的實例ID,然後做這些東西。

    希望它可以幫到你