我在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
。
答案 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);
}