首页 > 解决方案 > setVisibility(View.GONE) 导致崩溃

问题描述

[编辑:我刚刚替换adView.setVisibility(View.GONE)adView.setVisibility(View.INVISIBLE)WebView 加载并且没有任何崩溃,所以当我删除 AdView xml 元素时,它看起来确实与它有关,而不仅仅是让它不可见。让它不可见并不理想,因为您会在广告应该在的底部看到一个白色的空条。因此,它看起来确实与重新加载 Webview 或弄乱 UI 有关。我的 html/javascript 代码是可靠的,可以处理任何尺寸变化。]

我在广告横幅上方有一个 Webview(这"ca-app-pub-3940256099942544/6300978111"是测试广告 ID,所以我没有提供任何个人信息)

<WebView
    android:id="@+id/webView"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_marginBottom="5dp"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toTopOf="@+id/adView" />

<!-- "BANNER" or "LARGE_BANNER" -->
<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:adSize="BANNER"
    app:adUnitId="ca-app-pub-3940256099942544/6300978111"/>

注意:app:layout_constrain...在 Webview 中。我认为这可能是问题的一部分。

在启动时,我正在检查购买。如果用户进行了任何购买,我会使用以下代码关闭广告:

public void turnAdvertsOff() {
    advertsOn = false;
    AdView adView = (AdView) m_Context.findViewById(R.id.adView);
    adView.destroy();
    adView.setVisibility(View.GONE);
}

随着这一行adView.setVisibility(View.GONE);程序因毫无根据的指控而崩溃:

I/chromium: [INFO:CONSOLE(6381)] "Uncaught Error: Java exception was raised during method invocation", source: file:///android_asset/www/index.html?IsAndroidWebview=true (6381)
D/WebView: loadUrl=about:blank
D/WebView: destroy

但是,我知道 Webview 没有任何问题,因为当我散列该行时//adView.setVisibility(View.GONE);,WebView 加载正常。

有谁知道为什么?

它与 有什么关系app:layout_constraint..,如果是,我该如何克服它?

标签: androidxml

解决方案


这是隐藏 adView 的建议:

adView.pause();
adView.setVisibility(View.GONE); 

推荐阅读