如何为多个webview实例创建类或方法

时间:2016-04-16 15:16:26

标签: java android android-fragments webview

我在tablayout中有3个片段及其3个布局。所有三种布局都有各自的webview,swipeRefreshLayout和进度条。目前我复制粘贴所有三个片段中的相同代码。我想创建一个类或单个方法,以便我在其中进行的更改将反映在片段中的所有三个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;
    }

}

你可以帮我解决一下如何创建一个类并处理webview,progress bar和amp;等对象的问题。 swipeRefreshLayout,这样我就不必在所有三个片段中复制相同的代码了吗?

1 个答案:

答案 0 :(得分:1)

我可以建议你创建一个Fragment类,然后使用不同的url创建它的3个实例。

因此,您将拥有一个片段类和一个布局。然后你只需使用不同的URL实例化(如果url是它们之间的唯一区别)