【问题标题】:Android webview doesn't load homepage but load all other pagesAndroid webview 不加载主页但加载所有其他页面
【发布时间】: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;
    }
}

【问题讨论】:

    标签: android webview


    【解决方案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());
        }
    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2019-02-13
      相关资源
      最近更新 更多