0

嗨,我正在尝试让新的 android 3.0 adwhirl 正常工作,但我正在苦苦挣扎。

在我的 xml 中,我有:

在我的课堂上

...

设置内容视图(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()。

我知道这可能是一个简单的布局问题,但我看不到解决方案,任何帮助将不胜感激。

谢谢朋友。

4

1 回答 1

0

当我试图让 AdWhirl 示例代码正常工作时,我实际上做了和你一样的事情。问题是您已经在 XML 文件中创建了一个带有 AdWhirlLayout 的布局,并且您正在检索该现有实例:

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

然后您尝试将其添加回您拥有的 LinearLayout 中:

layout.addView(adWhirlLayout, layoutParams);

您可以从 XML 文件中删除 AdWhirlLayout 并替换我提到的第一行代码,并创建一个新实例:

AdWhirlLayout adWhirlLayout = new AdWhirlLayout();  

(我可能缺少构造函数的参数,我是在 SO 上手动写出来的。)

这将创建 AdWhirlLayout 的新实例并将其添加到您的 layout_main LinearLayout。

于 2011-04-28T18:23:22.093 回答