2013-08-18 33 views
0

我已经创建了一个带有三个选项卡的选项卡应用程序。我有一个线性布局,这是三个标签常见的。如果我将这个线性布局添加到所有三个选项卡的顶部,则第一个选项卡显示线性布局。但我在第二个和第三个选项卡中出现以下错误。如何重复使用相同的LinearLayout多次

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

如果我删除孩子意味着其他选项卡会受到影响。如何在java代码中不止一次地重复使用linearlayout,而不使用xml布局。

编辑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()); 

我需要在所有的三个选项卡使用此广告布局。

编辑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从编辑创建1

回答

0

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

如果视图存在添加视图

或之前使用removeView()你也可以尝试removeAllViews()

+0

是的,删除一个选项卡中的视图也会影响其他选项卡。所以,只问,有没有什么方法可以多次重复使用相同的布局? – Karthick

+0

您的代码在哪里定义? –

+0

您是否尝试过先删除视图并再次添加它! –