2016-04-16 74 views
0

我有3個片段,其3個佈局在tablayout中。所有三種佈局都有其獨立的webview,swipeRefreshLayout和一個進度條。目前我複製粘貼相同的代碼在所有三個片段。我想做一個類或一個單一的方法,使我所做的更改將反映在所有三個webview設置片段如何爲webview的多個實例創建一個類或方法

以下是我的片段,我只是複製並粘貼下面的代碼在所有三個片段&只更改網址。

public class Yahoo extends Fragment { 


    final String url = "http://www.yahoo.com/"; 
    private WebView webView; 
    private ProgressBar progressBar1; 
    private SwipeRefreshLayout mSwipeRefreshLayout1; 


    public Yahoo() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 


     return inflater.inflate(R.layout.fragment_tab13, container, false); 


    } 


    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 


     progressBar1 = (ProgressBar) view.findViewById(R.id.progressBar1); 

     webView = (WebView) view.findViewById(R.id.website_detail_1); 
     webView.getSettings().setJavaScriptEnabled(true); 

     webView.setWebChromeClient(new WebChromeClient() { 


      public void onProgressChanged(WebView view, int progress) { 

       progressBar1.setProgress(progress); 

       if (progress == 100) { 

        progressBar1.setVisibility(View.GONE); 

        if (mSwipeRefreshLayout1.isRefreshing()) { 
         mSwipeRefreshLayout1.setRefreshing(false); 
        } 
       } else { 
        progressBar1.setVisibility(View.VISIBLE); 
       } 

      } 


     }); 


     webView.setWebViewClient(new WebViewClient() { 

      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

     }); 

     webView.loadUrl(url); 


     mSwipeRefreshLayout1 = (SwipeRefreshLayout) view.findViewById(R.id.swipe1); 
     mSwipeRefreshLayout1.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       webView.loadUrl(url); 
      } 
     }); 

     webView.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) { 
        webView.goBack(); 
        return true; 
       } 

       return false; 
      } 
     }); 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     // Log.d("Yahoo webview", "destroy"); 
     if (webView != null) { 
      webView.removeAllViews(); 
      webView.destroy(); 
     } 

     webView = null; 
    } 

} 

你能幫助我如何創建一個類,並處理像web視圖對象,進度條& swipeRefreshLayout這樣我不必重複相同的代碼在所有三個片段?

回答

1

我可以建議的一件事是,你創建一個單一的片段類,然後使用不同的網址創建它的3個實例。

所以,你將有一個片段類和一個佈局了。然後你只需實例化它們與不同的網址(如果url是它們之間的唯一區別)

+0

好的!感謝您的小費。 –

相關問題