Проблема с версией Android Adwhirl 3.0 - PullRequest
0 голосов
/ 28 апреля 2011

Привет! Я пытаюсь заставить работать новый 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 Ответ

0 голосов
/ 28 апреля 2011

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

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

И затем вы пытаетесь добавить его обратно в LinearLayout, который вы 'Вы получили:

layout.addView(adWhirlLayout, layoutParams);

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

AdWhirlLayout adWhirlLayout = new AdWhirlLayout();  

(Iмогут отсутствовать параметры для конструктора, я пишу это вручную на SO.)

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

...