2016-04-04 4 views
0

マイタブレイアウトには、webviewとプログレスバーを含む1つのフラグメントを持つ3つのタブがあります。私は2つのためにさらに2つのJavaファイルを作成したいWebviewのパブリックメソッドを作成する

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 

       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 


    <ProgressBar 
     android:id="@+id/progressBar1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:indeterminate="false"/> 

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

     <WebView 
      android:id="@+id/website_detail_1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 

      > 

     </WebView> 
    </android.support.v4.widget.SwipeRefreshLayout> 

</RelativeLayout> 

:私はこれは私が使用してフラグメントクラスです。この

public class Yahoo extends Fragment { 


    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_tab1, container, false); 


    } 



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


     progressBar1 = (ProgressBar) view.findViewById(R.id.progressBar1); 
     // String url = "http://www.carsaleindiaofficial.com/?m=1"; 
     webView = (WebView) view.findViewById(R.id.website_detail_1); 

     webView.setWebViewClient(new MyAppWebViewClient()); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setDomStorageEnabled(true); 

     webView.loadUrl("http://www.yahoo.com//"); 
     webView1.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
     view.loadUrl("file:///android_asset/web.html"); 
      myWebView.getSettings().setDefaultZoom(ZoomDensity.FAR); 


     WebSettings webSettings = webView.getSettings(); 
     webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
     webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
     webView.getSettings().setAppCacheEnabled(true); 
     webSettings.setDomStorageEnabled(true); 
     webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); 
     webSettings.setUseWideViewPort(true); 
     webSettings.setSavePassword(true); 
     webSettings.setSaveFormData(true); 
     webSettings.setEnableSmoothTransition(true); 
     webSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR); 


     mSwipeRefreshLayout1 = (SwipeRefreshLayout) view.findViewById(R.id.swipe1); 
     mSwipeRefreshLayout1.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 
      @Override 
      public void onRefresh() { 
       webView.loadUrl("http://www.yahoo.com/"); 
      } 
     }); 

     if (mSwipeRefreshLayout1.isRefreshing()) { 
      mSwipeRefreshLayout1.setRefreshing(false); 
     } 


     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; 
      } 
     }); 

    } 

    public class MyAppWebViewClient extends WebViewClient { 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      //view.findViewById(R.id.progressBar1).setVisibility(View.GONE); 
      Log.i("pageFinished", "yesss"); 
      //progressBar.setVisibility(View.INVISIBLE); 
      progressBar1.setVisibility(View.GONE); 


      if (mSwipeRefreshLayout1.isRefreshing()) { 
       mSwipeRefreshLayout1.setRefreshing(false); 
      } 


     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
     } 


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


    } 
} 

ようになり、ウェブサイトのための3種類のjavaファイルと1つのJavaファイルを作成しました別のウェブサイトと私はちょうど最初のJavaファイルからコードのすべての行をコピーし、残りの2つのウェブサイトのアドレスを変更して貼り付けます。私は何かを変更するたびに3つのファイルすべてを変更する必要があるため、一般的なパブリックメソッドを呼び出すことでこれを単純化する方法を知りたいと思います。

また、私のアプリケーションは、リソースを使用して、フレームをスキップしてlogcatを表示する理由を最小限に抑えます。

答えて

0

なぜ3タブに同じものを使用しないのですか?意図がある場合はputExtra 、別の場合はsetArgumentと異なるURLを渡すことができます。

+0

フラグメントであるので、setArgumentのコードを助けてくれますか? – choman

関連する問題