完全删除AdView

时间:2014-02-25 10:17:39

标签: android admob

我在AdView的XML中定义了Layout,如果用户购买了应用的无广告版本,我想让它消失。

我正在做的是

if(userhaspurchased){
    if (mAdView != null) {
        mAdView.setVisibility(View.GONE);
        mAdView.pause();
        ViewGroup vg = (ViewGroup) mAdView.getParent();
        mAdView.destroy();
        vg.removeView(mAdView);
        mAdView = null;
    }
    Log.d("Purchased","true");
} else { //Load ad }

广告不可见,但在日志中我仍然收到AdView消息:

02-25 11:14:58.688: I/Ads(9279): Ad is not visible. Not refreshing ad.
02-25 11:14:58.688: I/Ads(9279): Scheduling ad refresh 60000 milliseconds from now.

他们每分钟都在重复。有没有办法完全禁用AdView

更新: @Doomsknight在我的情况下答案很好,我只有2个广告布局。否则,最佳做法是检查购买并最终以编程方式插入AdView

2 个答案:

答案 0 :(得分:4)

您的xml正在定义广告视图。并自动连接。所以当你隐藏它时,它已经被初始化了。

对于付费版本,一种解决方案是使xml完全排除广告视图。

并将其设置在顶部

if(userhaspurchased)
     setContentView(R.layout.paid_version_xml);
else
     setContentView(R.layout.free_version_xml);

然而,这取决于您拥有多少xmls和广告。由于维护每个页面的变体并带有广告,因此可能会出现问题。

答案 1 :(得分:3)

请勿在xml文件中添加adview视图。而是在xml布局文件中添加占位符。

<LinearLayout
    android:id="@+id/admob"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="horizontal" >

</LinearLayout>

在您的代码中:

if(!userhasPurchased)
{
    AdView adView = new AdView(this, AdSize.BANNER, adunit_id);
    LinearLayout layout = (LinearLayout) findViewById(R.id.admob);
    layout.addView(adView);
    AdRequest adRequest = new AdRequest();
    adView.loadAd(adRequest); 
}