【问题标题】:How to reuse same LinearLayout multiple times如何多次重用相同的LinearLayout
【发布时间】:2013-08-18 17:13:01
【问题描述】:

我创建了一个包含三个选项卡的选项卡应用程序。我有一个线性布局,这对于三个选项卡很常见。如果我在所有三个选项卡的顶部添加此线性布局,则第一个选项卡显示线性布局。但我在第二个和第三个选项卡中收到以下错误。

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

我需要在所有三个标签中使用此广告布局。

编辑 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 创建的。

【问题讨论】:

    标签: android android-linearlayout reusability


    【解决方案1】:

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

    如果存在视图,请在添加视图之前使用removeView()

    或者你也可以试试removeAllViews()

    【讨论】:

    • 是的,删除一个选项卡中的视图也会影响其他选项卡。所以,只是问,有没有办法多次重复使用相同的布局?
    • 您是否尝试过先删除视图然后再添加它!
    • 是的,添加和删除不会影响其他标签视图。
    • 我在编辑 1 中定义了布局。我需要为所有三个选项卡使用此布局。
    • 好的,我评论了!您可以将其与定义选项卡的代码一起附加!
    【解决方案2】:

    您可能正在使用相同的代码(视图)来添加到您的布局中。每次循环中都必须创建一个新视图或布局。见此链接:How to dynamically inject LinearLayout multiple times (Android)?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多