Android webview 不加载主页但加载所有其他页面

Posted

技术标签:

【中文标题】Android webview 不加载主页但加载所有其他页面【英文标题】:Android webview doesn't load homepage but load all other pages 【发布时间】:2021-12-02 06:13:04 【问题描述】:

android webview 不加载主页,但加载所有其他页面!奇怪的是,当我从应用程序的原始站点菜单中单击主页时,它会正确加载主页而没有任何问题,但是如果我尝试从顶部导航菜单中单击它,它根本不会加载!

package com.example.couponcheetah;

import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewController extends WebViewClient 
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
        view.getSettings().setjavascriptEnabled(true);
        view.getSettings().setDomStorageEnabled(true);
        view.getSettings().setSupportZoom(false);
        view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

        // hide element by id
        view.loadUrl("javascript:(function()  " +
                "document.getElementById('site-navigation').style.display='none';)()");
        view.loadUrl(url);
        return true;
    

这是家庭片段:

package com.example.couponcheetah.ui.home;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;

import com.example.couponcheetah.WebViewController;
import com.example.couponcheetah.R;

public class HomeFragment extends Fragment 

    private HomeViewModel homeViewModel;

    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) 
        homeViewModel =
                new ViewModelProvider(this).get(HomeViewModel.class);
        View root = inflater.inflate(R.layout.fragment_home, container, false);

        WebView webView=root.findViewById(R.id.web_view_home);
        webView.loadUrl("https://couponcheetah.com");
        webView.setWebViewClient(new WebViewController());
        return root;
    

【问题讨论】:

【参考方案1】:

如果我正确理解您的问题 尝试将您的代码放在 onstart 而不是 oncreateView as

public class HomeFragment extends Fragment 

    private HomeViewModel homeViewModel;
     private WebView webView;
    public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) 
        homeViewModel =
                new ViewModelProvider(this).get(HomeViewModel.class);
        View root = inflater.inflate(R.layout.fragment_home, container, false);

        webView=root.findViewById(R.id.web_view_home);
        return root;
    
    
    // impelment funcation onStart and put your code
    webView.loadUrl("https://couponcheetah.com");
        webView.setWebViewClient(new WebViewController());
    

【讨论】:

以上是关于Android webview 不加载主页但加载所有其他页面的主要内容,如果未能解决你的问题,请参考以下文章

Android WebView 不加载页面而不附加到 xml

android中webview 怎么实现网页加载时显示加载进度?

android中webview 怎么实现网页加载时显示加载进度

android中webview 怎么实现网页加载时显示加载进度

Android WebView资源文件,如js和css文件缓存

Android WebView 加载超长 JS 数据