0

3 つのタブを持つタブ アプリケーションを作成しました。3 つのタブに共通する線形レイアウトを使用しています。この線形レイアウトを 3 つのタブすべての上部に追加すると、最初のタブに線形レイアウトが表示されます。しかし、2 番目と 3 番目のタブで次のエラーが表示されます。

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

子手段を削除すると、他のタブが影響を受けます。xml レイアウトを使用せずに、Java コードで linearlayout を複数回再利用する方法。

編集1:

    LinearLayout layout = new LinearLayout(this);
    LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    ll.gravity = Gravity.CENTER_HORIZONTAL;
    final AdView adView = new AdView(this, AdSize.SMART_BANNER, "/6253334/dfp_example_ad");
    layout.addView(adView);  
    adView.loadAd(new AdRequest());

3 つのタブすべてでこの広告レイアウトを使用する必要があります。

編集2:

タブのコンテンツを作成するために次のコードを使用します。

public FrameLayout createTabContent()
  { 
    FrameLayout layout = new FrameLayout(sMainContext);
    FrameLayout.LayoutParams layoutparams=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT,Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);    
    layout.setForegroundGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
    layout.setLayoutParams(layoutparams);       
    mWebView=new WebView(sMainContext);
    mWebView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));

    LinearLayout adlayout = new LinearLayout(sMainContext);
    adLayout = (LinearLayout) (commonAdLayout);

    layout.addView(mWebView);
    layout.addView(adlayout);
    return layout;
}

commonLayout は EDIT 1 から作成されます。

4

2 に答える 2