Проблема с версией Android Adwhirl 3.0

Привет, я пытаюсь заставить работать новый Android 3.0 AdWirl, и я изо всех сил.

В моем XML у меня есть:

В моем классе

...

setContentView (R.layout.main);

    //Add Whirl
    AdWhirlManager.setConfigExpireTimeout(1000 * 60 * 5);

    AdWhirlTargeting.setTestMode(false);

    AdWhirlLayout adWhirlLayout = (AdWhirlLayout)findViewById(R.id.adwhirl_layout);

    TextView textView = new TextView(this);
    RelativeLayout.LayoutParams layoutParams = new
    RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    int diWidth = 320;
    int diHeight = 52;
    int density = (int) getResources().getDisplayMetrics().density;

    adWhirlLayout.setAdWhirlInterface(this);
    adWhirlLayout.setMaxWidth((int)(diWidth * density));
    adWhirlLayout.setMaxHeight((int)(diHeight * density));

    layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
    textView.setText("Below AdWhirlLayout");

    LinearLayout layout = (LinearLayout)findViewById(R.id.layout_main);

    layout.setGravity(Gravity.CENTER_HORIZONTAL);
    layout.addView(adWhirlLayout, layoutParams);
    layout.addView(textView, layoutParams);
    layout.invalidate();

    ...

Однако когда я запускаю его, я получаю

У указанного ребенка уже есть родитель. Сначала вы должны вызвать removeView() у родителя ребенка.

Я знаю, что это, вероятно, простая проблема макета, но я не вижу решения, любая помощь будет оценена.

Спасибо, друзья.

1 ответ

Я фактически сделал то же самое, что и вы, когда пытался заставить работать пример кода AdWhirl. Проблема в том, что вы создали макет с AdWhirlLayout в файле XML и извлекаете этот существующий экземпляр:

AdWhirlLayout adWhirlLayout = (AdWhirlLayout)findViewById(R.id.adwhirl_layout);

И затем вы пытаетесь добавить его обратно в полученную LinearLayout:

layout.addView(adWhirlLayout, layoutParams);

Вы можете просто удалить AdWhirlLayout из XML-файла и заменить первую строку кода, которую я упомянул, создав новый экземпляр:

AdWhirlLayout adWhirlLayout = new AdWhirlLayout();  

(Возможно, мне не хватает параметров для конструктора, я пишу это вручную на SO.)

Это создаст новый экземпляр AdWhirlLayout и добавит его в ваш layout_main LinearLayout.

Другие вопросы по тегам