下面是效果图和对应的类和布局:
1.加载异常:2.加载正常:3.MainActivity:
public class MainActivity extends BaseActivity implements OnTabSelectListener, ViewPager.OnPageChangeListener {    @BindView(R.id.vp_container)
    NoScrollViewPager mViewPager;
    @BindView(R.id.ctl_bottom_bar)
    CommonTabLayout mCommonTabLayout;
    @BindView(R.id.rl_main_root)
    RelativeLayout mRootView;    private static final String TAG = "MainActivity";
    private ArrayList<Fragment> mFragments = new ArrayList<>();
    private String[] mTitles = {"首页", "福利", "金融生活", "我的"};     /*底部导航标题*/
    //    private String[] mTitles = {"首页", "福利", "我的"};     /*底部导航标题*/
    private int[] mIconUncheckIds = {R.mipmap.home_uncheck, R.mipmap.welfare_uncheck, R.mipmap.life_uncheck, R.mipmap.mine_uncheck};       /*未选中的icon*/
    private int[] mIconCheckedIds = {R.mipmap.home_checked, R.mipmap.welfare_checked, R.mipmap.life_checked, R.mipmap.mine_checked};   /*选中时的icon*/
    private ArrayList<CustomTabEntity> mTabEntities = new ArrayList<>();
    private VersionPresenter presenter = new VersionPresenter(this);
    long exitTime = 0;
    long touchTime = 2000;    public static void open(Context context, String checkBill) {
        Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra("checkBill", checkBill);//如果是在授权成功后页面跳转到这里,直接显示到账单页
        context.startActivity(intent);
    }    public static void open(Context context, String title, String url) {
        Intent intent = new Intent(context, MainActivity.class);
        intent.putExtra("title", title);
        intent.putExtra("url", url);
        context.startActivity(intent);
    }    @Override
    protected int getLayout() {
        return R.layout.activity_main;
    }    @Override
    protected void onResume() {
        super.onResume();
//        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);//隐藏软键盘
//        boolean login = UserManager.getInstance().isLogin();
//        if(!login){
//            mCommonTabLayout.setCurrentTab(0);
//            mViewPager.setCurrentItem(0);
//        }
    }    @Override
    protected void initView(Bundle savedInstanceState) {
        mToolbar.setVisibility(View.GONE);
//        Log.d(TAG, "initView: 2030");        //todo:首页分为三种类型: 1.提交后首页    2.精准匹配全部已提交首页   3.未匹配到产品首页
        mFragments.add(HomeFragment.getInstance(mCommonTabLayout, mViewPager));
//        mFragments.add(ExactHomeFragment.getInstance(mViewPager,mCommonTabLayout));
//        mFragments.add(UnmatchHomeFragment.getInstance());
        mFragments.add(WealFragment.getInstance());
//        mFragments.add(WebWealFragment.getInstance());
        mFragments.add(LifeFragment.getInstance());
//        mFragments.add(BillFragment.getInstance()); //原生账单
//        mFragments.add(WebBillFragment.getInstance()); //网页版账单
        mFragments.add(MineFragment.getInstance());
    }    @Override
    protected void initData() {
        /*添加数据集*/
        for (int i = 0; i < mTitles.length; i++) {
            mTabEntities.add(new TabEntity(mTitles[i], mIconCheckedIds[i], mIconUncheckIds[i]));
        }
        mViewPager.setAdapter(new MainPagerAdapter(getSupportFragmentManager(), mFragments, mTitles));
        setLayout();
        //设置未读消息红点
//        mCommonTabLayout.showDot(1);        presenter.checkVersion(false);        String title = getIntent().getStringExtra("title");//未登录首页的H5标题和地址
        String url = getIntent().getStringExtra("url");
        Log.d(TAG, " 1543 onSuccess: title=" + title + "  url=" + url);
        if (title != null && url != null && title != "" && url != "") {
            ToastUtils.showLong(R.string.the_phone_number_has_been_copied);
            WebViewActivity.open(this, url, title);
        }
    }    @Override
    protected void initEvent() {
//        RxManager.getMethod().authCode()
    }    private void setLayout() {
        mCommonTabLayout.setTabData(mTabEntities);
        mCommonTabLayout.setOnTabSelectListener(this);
        mViewPager.addOnPageChangeListener(this);
        String checkBill = getIntent().getStringExtra("checkBill");//如果是在授权成功后页面跳转到这里,直接显示到账单页
//        if (checkBill.equals("checkBill")) {
//            Log.d(TAG, "setLayout: 1644    222222222222222");
//            mViewPager.setCurrentItem(1);
//            mCommonTabLayout.setCurrentTab(1);
//            Log.d(TAG, "setLayout: 1644    11111111111111");
//        } else {//        }
//        mViewPager.setCurrentItem(1);
//        mCommonTabLayout.setCurrentTab(1);
        int currentTab = mCommonTabLayout.getCurrentTab();
        Log.d(TAG, "setLayout: 1519= " + currentTab);
    }
    @Override
    public void onTabSelect(int position) {
        mViewPager.setCurrentItem(position, false);  //false取消切换过渡动画
        switch (position) {
            case 0:
//                boolean homeLogin = UserManager.getInstance().isLogin();
//                if (homeLogin) {
                    StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true);    //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true);    //设置状态栏字体颜色
//                } else {
//                    LoginActivity.open(this, "", "");
//                }
                break;
            case 1:
//                boolean wealLogin = UserManager.getInstance().isLogin();
//                if (wealLogin) {
                    StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true);    //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true);    //设置状态栏字体颜色
//                } else {
//                    LoginActivity.open(this, "", "");
//                }
                break;
            case 2:
                boolean lifeLogin = UserManager.getInstance().isLogin();
                if (lifeLogin) {
                    StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, true);    //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true);    //设置状态栏字体颜色
                } else {
                    LoginActivity.open(this, "", "");
                }
                break;
            case 3:
                boolean mineLogin = UserManager.getInstance().isLogin();
                if (mineLogin) {
                    StatusBarUtil.setAndroidNativeLightStatusBar(MainActivity.this, false);    //设置状态栏字体颜色,因为会预加载,所以第二个fragment也要先设置StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(),true);    //设置状态栏字体颜色
                } else {
                    LoginActivity.open(this, "", "");
                }
                break;
        }
    }    @Override
    public void onTabReselect(int position) {    }    @Override
    public void onPageScrolled(int i, float v, int i1) {    }    @Override
    public void onPageSelected(int position) {
        mCommonTabLayout.setCurrentTab(position);
    }    @Override
    public void onPageScrollStateChanged(int i) {    }    @Override
    public void onBackPressed() {
        int currentTab = mCommonTabLayout.getCurrentTab();
        Log.d(TAG, "onBackPressed: 1532= " + currentTab);//(选中账单)等于2的时候判断返回        if ((System.currentTimeMillis() - exitTime) > touchTime) {// 判断2次点击事件时间
            ToastUtils.showShort(R.string.back_desk);
            exitTime = System.currentTimeMillis();
        } else {
            ActivityUtils.finishAllActivities();    //结束所有 Activity
        }
    }
}
4.加载WebView偶尔出问题的Fragment:
public class LifeFragment extends LazyFragment {    @BindView(R.id.tl_life_web)
    Toolbar mTitle;
    @BindView(R.id.wv_web_life)
    WebView mWebView;
    @BindView(R.id.pb_web_view_life)
    ProgressBar progressBar;
    @BindView(R.id.fl_life_root_view)
    FrameLayout mRootView;
    @BindView(R.id.ll_life_root)
    LinearLayout mLifeRoot;    private static final String TAG = "LifeFragment";    public static LifeFragment getInstance() {
        LifeFragment fragment = new LifeFragment();
        return fragment;
    }    @Override
    protected int getLayout() {
        return R.layout.fragment_life;
    }    @Override
    protected void initView(View view, Bundle savedInstanceState) {
        Log.d(TAG, " 1342 initView: 111111111111111");
        ImmersionBar.with(this).titleBar(mTitle).init();
        StatusBarUtil.setAndroidNativeLightStatusBar(getActivity(), true);    //设置状态栏字体颜色
    }    @Override
    public void fetchData() {
        Log.d(TAG, " 1342 initView: 222222222222222");
        setData();
    }    private void setData() {
        mWebView.clearCache(true);
        mWebView.clearHistory();
        mRootView.removeAllViews();
        mRootView.addView(mLifeRoot);
        mWebView.setVisibility(View.VISIBLE);
        mWebView.getSettings().setJavaScriptEnabled(true);//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
        mWebView.getSettings().setDomStorageEnabled(true);//开启DOM        //启用数据库
        mWebView.getSettings().setDatabaseEnabled(true);
        //启用地理定位,默认为true
        mWebView.getSettings().setGeolocationEnabled(true);
        //自适应屏幕大小
        mWebView.getSettings().setUseWideViewPort(true);
        mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        mWebView.getSettings().setLoadWithOverviewMode(true);
        //支持屏幕缩放
        mWebView.getSettings().setSupportZoom(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setDisplayZoomControls(false);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//解决部分图片不显示
        }        String url = "https://www.cardfanr.com/index?merchantNo=8150737830";
//        String url = "https:

解决方案 »

  1.   

    fragment对应的布局:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">    <android.support.v7.widget.Toolbar
            android:id="@+id/tl_life_web"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white">        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="金融生活"
                android:textColor="#FF333333"
                android:textSize="20sp" />    </android.support.v7.widget.Toolbar>    <FrameLayout
            android:id="@+id/fl_life_root_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent">        <LinearLayout
                android:id="@+id/ll_life_root"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">            <ProgressBar
                    android:id="@+id/pb_web_view_life"
                    style="?android:attr/progressBarStyleHorizontal"
                    android:layout_width="match_parent"
                    android:layout_height="3dp"
                    android:progressDrawable="@drawable/web_view_progress_layer_list"
                    android:visibility="gone" />            <WebView
                    android:id="@+id/wv_web_life"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">            </WebView>        </LinearLayout>    </FrameLayout></LinearLayout>
      

  2.   

    在set data 后加多一个重新加载。一开始先显示了空的数据,然后再获取了你的数据。所以没有显示
      

  3.   

    这样子吗?
     @Override
        public void setUserVisibleHint(boolean isVisibleToUser) {
            super.setUserVisibleHint(isVisibleToUser);
            if (isVisibleToUser) {
                if (mWebView != null) {
    //                mWebView.clearCache(true);
    //                mWebView.clearHistory();
    //                mRootView.removeAllViews();
    //                mRootView.addView(mLifeRoot);
    //                mWebView.setVisibility(View.VISIBLE);
    //                setData();
                    mWebView.reload();
                }
            }
        }