Проблема с адмоб

ОК, я уже задавал аналогичный вопрос и получил ответ, но это был слишком общий вопрос.

Теперь у меня есть приложение, в котором много занятий. Каждое действие имеет один и тот же макет admob (AdView), включенный в его файл макета. Теперь проблема заключается в том, что когда я перехожу от одного действия к другому после того, как первый экран завершил загрузку рекламы, второе действие все еще ждет, пока произойдет еще один цикл загрузки рекламы [т. е. оно снова отправляет запрос объявления и отображает новое объявление ]. Все, что я хочу сделать, это чтобы мое приложение показывало один и тот же экземпляр объявления в каждом действии. [То же значение примера: у меня есть временной интервал, в соответствии с которым объявления должны обновляться, поэтому новый запрос объявления должен быть отправлен только по истечении срока, а не когда пользователь переходит от одного действия к другому.]

В любом случае, я могу это сделать. Я попробовал подход «Singleton», упомянутый в предыдущем решении, но есть много сложностей, потому что каждый раз, когда я это делаю, он говорит, что у указанного дочернего элемента уже есть родитель, и необходим вызов removeView для родителя.

Я делаю что-то не так (ИЛИ/И), может ли кто-нибудь помочь мне с каким-то другим решением??

Мой класс 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.


person Anand Sainath    schedule 26.03.2011    source источник
comment
Конечно, вы получаете больше дохода от показа большего количества объявлений, чем от одного?   -  person Blundell    schedule 26.03.2011
comment
Да, я это знаю, но это будет раздражать пользователей. Вот я и подумал, что найду обходной путь.   -  person Anand Sainath    schedule 26.03.2011


Ответы (1)


Я не уверен в точном синтаксисе. Не могли бы вы связать API AdMob?

Но вы получаете сообщение об ошибке, потому что когда вы возвращаете макет объявления, он уже прикреплен к предыдущему действию. Итак, вам понадобится что-то вроде этого:

public static AdView getAdLayout() {

admobView.removeParent(); // или аналогичный см. API

вернуть admobView;

<забастовка> }

ИЗМЕНИТЬ

Итак, приступим: AdView JavaDoc. унаследовано от представления и отлично RelativeLayout.

Попробуй это:

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

or

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

Ответ находится в JavaDoc, просто немного проб и ошибок

person Blundell    schedule 26.03.2011
comment
@ Ананд Как это не помогает? Можно поконкретнее, вы пробовали? Ваша последняя ошибка на самом деле намекает на то, что вы должны делать - person Blundell; 26.03.2011
comment
Эй, большое спасибо, что помог мне с этим. Очень ценю ваше время на это! - person Anand Sainath; 26.03.2011