Щелчок гиперссылки в WebView внутри фрагмента должен открыться в новом WebView в действии (хитро) - PullRequest
0 голосов
/ 23 марта 2020

Я использую фрагмент с WebView. Webview открывается правильно. Мое намерение заключается в следующем: посетитель нажимает на любую из ссылок в WebView внутри фрагмента. Нажатая ссылка открывается в новом WebView в новом Activity. Сложная часть - все ссылки с одного веб-сайта, внешних ссылок нет. Сложно для меня, по крайней мере. Большое спасибо за вашу помощь заранее! :)

Вот мой код WebView из фрагмента:

public class HomeFragment extends Fragment {

@SuppressLint("SetJavaScriptEnabled")
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_naslovna, container, false);

    WebView webView = view.findViewById(R.id.webView1);
    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl("https://mywebpage.com/");

    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    return view;
}

}

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

У вас заняло еще 6 часов работы над головоломками, но в конце концов это было исправлено.

public class HomeFragment extends Fragment {

WebView webView;
SwipeRefreshLayout swipeToRefreshLayout;

@SuppressLint("SetJavaScriptEnabled")
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_naslovna, container, false);
    webView = view.findViewById(R.id.webView1);

    final String pageUrl = "https://mywebpage.com/";

    swipeToRefreshLayout = (SwipeRefreshLayout)view.findViewById(R.id.swiperefresh);
    swipeToRefreshLayout.setOnRefreshListener(new RtvTkSwipeToRefreshListener(webView, swipeToRefreshLayout));

    webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url != pageUrl) {
                startNewActivity(url);
            }
            return true;

        }
    });

    webView.loadUrl(pageUrl);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    return view;
}

private void startNewActivity(String url) {
    Intent myIntent = new Intent(getActivity(), NewActivity.class);
    myIntent.putExtra("url", url);
    getActivity().startActivity(myIntent);
}

}

0 голосов
/ 23 марта 2020

Пожалуйста, попробуйте это:

WebViewClient webClient = new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView  view, String  url){
        if( url.equals("http://test.com") ){
            // do whatever you want e.g. open up activity with web view and pass the url
        }
        return true;
    }
}
...