2011-03-26 80 views
1

好的,我之前曾問過類似的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

回答

3

我不確定確切的語法,可以鏈接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