admob的问题

问题描述:

好的,我之前曾问过类似的question并得到了答案,但这个问题太笼统了。admob的问题

现在我有一个应用程序,其中有很多的活动。每个活动的布局文件中都包含相同的admob(AdView)布局。现在问题出现在第一个屏幕完成加载广告后从一个活动转到另一个活动时,第二个活动仍然等待另一个广告获取周期发生[即,它再次发送广告请求并显示新广告]。我想要做的就是让我的应用程序在每个活动中展示相同的广告实例。 [相同的实例含义:我有一段时间间隔,广告必须刷新,因此只有在时限到期时才会发送新的广告请求,而不是在用户从一个活动导航到另一个活动时发送。]

Is there无论如何,我可以做到这一点。我已经尝试了前面解决方案中提到的“Singleton”方法,但每当我这样做时就会出现很多并发症,它说指定的子项已经有父项,并且需要调用removeView在父项上。

我做错了什么(OR/AND)任何人都可以帮助我解决其他一些问题吗?

我的Singleton类是在这里:

public class CommonAdFooter { 
static final CommonAdFooter commonAdFooter = new CommonAdFooter(); 
static AdView admobView; 
LayoutInflater LInflater; 

private CommonAdFooter() { 
    LInflater = (LayoutInflater) Constants.context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    admobView = (AdView) LInflater.inflate(R.layout.ad_layout, null); 
    LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, 
      LayoutParams.WRAP_CONTENT); 
    lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    admobView.setLayoutParams(lp); 
} 

public static AdView getAdLayout() { 
    return admobView; 
} 
} 

,这是广告

<?xml version="1.0" encoding="utf-8"?> 
<com.admob.android.ads.AdView 
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="..." 
android:id="@+id/ad" android:layout_alignParentBottom="true" 
android:background="#C9E3F6" android:layout_width="fill_parent" 
android:layout_height="wrap_content" myapp:backgroundColor="#006699" 
myapp:primaryTextColor="#C9E3F6" myapp:secondaryTextColor="#C9E3F6" /> 

编辑我的布局文件:AdMob联播API链接添加。

+1

当然,你得到更多的收入来自服务于更多的广告不是保持一个? – Blundell 2011-03-26 10:37:17

+0

是的,我知道,但它会为用户烦人。所以我想我会找到解决办法。 – 2011-03-26 10:44:36

我不确定确切的语法,可以链接AdMob api吗?

但是您收到错误,因为当您返回广告版式时,它已经附加到上一个活动。所以,你需要这样的事:

公共静态的AdView getAdLayout(){

admobView.removeParent(); //或类似的API

return admobView;

}

编辑

啊在这里我们去: AdView JavaDoc所以从视图和RelativeLayout大herits。

试试这个:

public static AdView getAdLayout() { 
    if(admobView.getParent() != null){ 
     admobView.detachAllViewsFromParent(); 
    } 
    return admobView; 
} 

public static AdView getAdLayout() { 
    if(admobView.getParent() != null){ 
     admobView.getParent().removeView(admobView); 
    } 
    return admobView; 
} 

答案是在JavaDoc只是有点试验和错误的

+0

这似乎没有帮助.. – 2011-03-26 10:49:30

+0

@Anand它没有帮助吗?你能更具体一点,你尝试过吗?你最后的错误实际上暗示你应该做什么 – Blundell 2011-03-26 10:52:23

+1

嘿,非常感谢你帮助我解决这个问题。真的很感谢你在这里的时间! – 2011-03-26 12:10:39