0

こんにちは、新しい Android 3.0 adwhirl を動作させようとしていますが、苦労しています。

私の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() を呼び出す必要があります。

おそらく単純なレイアウトの問題であることはわかっていますが、解決策がわかりません。助けていただければ幸いです。

友よありがとう。

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 に答える