Несколько вкладок с Webview - PullRequest
0 голосов
/ 22 октября 2018

Я создаю приложение с 3 вкладками, содержащими веб-просмотр.WebViews загружают разные URL, такие как Amazon, Flipkart и Myntra.Я хочу искать на соответствующих сайтах.Для этого я использую EditText, чтобы получить ключевое слово.Текст из EditText (ключевое слово) передается во фрагменты, и URL-адрес должен быть соответствующим образом изменен (например, https://www.amazon.com/s/?field-keywords=keyword).. Проблема возникает при загрузке URL-адреса. URL-адрес не изменяется даже после объединения URL-адреса с ключевым словом.фрагменты загружают один и тот же URL каждый раз. Вот код фрагмента.

метод onButtonClick

    //calling the Adapter again
    String value = et.getText().toString();
    webViewAdapter = new WebViewAdapter(getSupportFragmentManager(),this,value);
    vp.setAdapter(webViewAdapter);

Код адаптера

@Override
public Fragment getItem(int i) {
    Bundle args = new Bundle();
    args.putString("search_term",key);
    switch (i)
    {
        case 0:
            AmazonFragment amazonFragment = new AmazonFragment();
            amazonFragment.setArguments(args);
            return amazonFragment;
        case 1:
            //similar to case 1
        case 2:
            //similar to case 1
    }
    return null;
}

Код фрагмента

    String url = "https://www.amazon.com/s/?field-keywords=";
    Bundle args = getArguments();
    keyword = args.getString("search_term");
    if(keyword == null)
        keyword = "";
    View v = inflater.inflate(R.layout.webview_fragment,container,false);
    webView = v.findViewById(R.id.webview);
    url =  url.concat(keyword);
    webView.setWebViewClient(new WebViewClient(){

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

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed(); // Ignore SSL certificate errors
        }
    });

    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webView.loadUrl(url);

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Удалено ваше переопределение загрузки URL, оно должно работать

 Bundle args = getArguments();
    keyword = args.getString("search_term");
    if(keyword == null)
        keyword = "";
    View v = inflater.inflate(R.layout.webview_fragment,container,false);
    webView = v.findViewById(R.id.webview);
    url =  url.concat(keyword);
    webView.setWebViewClient(new WebViewClient(){
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed(); // Ignore SSL certificate errors
    }
});

webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl(url);
0 голосов
/ 22 октября 2018

Гораздо более простым способом сделать это было бы иметь обратный вызов интерфейса от действия к фрагментам со значением и обновление веб-просмотров во фрагментах с измененными данными

String URL = existingUrl + searchValue;
webView.loadUrl(URL)
...