为Webview创建公共方法

时间:2016-04-04 07:00:28

标签: java android android-fragments webview

我的标签布局有3个标签,其中包含一个包含webview和进度条的片段。我为网站创建了3个不同的java文件,一个java文件看起来像这样

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


    }
}

这是我使用的片段类:

<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>

我想为两个不同的网站创建另外两个java文件,我只是复制第一个java文件中的所有代码行,并将其粘贴到剩下的两个上,并更改网站地址。我想知道如何通过调用常见的公共方法来简化这一过程,因为每次我改变一些东西时我都要在所有三个文件中进行更改。

此外,我的应用程序将无缘无故地使用logcat显示跳帧,使用高资源等。此处有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

为什么不在3选项卡中使用相同的选项?您可以使用putExtra传递不同的网址 如果它是Intent,或者如果是片段,则为setArgument