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 から作成されます。