1

互換性パッケージを使用して、Android アプリケーションで SherlockFragments を使用しています。でこのエラーが発生していfragmentsます。FATAL EXCEPTION: main java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.これらのフラグメントをアクションバー sherlock のタブとして追加しています。最初にタブを切り替えるときにアプリを正常に実行した後、2回目には onCreateView() で上記のエラーが発生します。

これは onCreate() のコードです

private static final String AD_UNIT_STANDARD_BANNER = "/6253334/dfp_example_ad/banner";
private DfpAdView adView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 

    adView = new DfpAdView(getActivity(), AdSize.BANNER, AD_UNIT_STANDARD_BANNER);  
    adView.setAdListener(this);
}

これは、フラグメント onCreateView() で使用しているコードです。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     
    View view = inflater.inflate(R.layout.fragment_chats, container, false);         
    listview = (ListView) view.findViewById(android.R.id.list); 
    RelativeLayout layout = (RelativeLayout) view.findViewById(R.id.chats_inner_layout);

    adView.setId(111);
    adView.loadAd(new AdRequest());        
    RelativeLayout.LayoutParams add_lp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    add_lp.addRule(RelativeLayout.BELOW, adView.getId());   
    listview.setLayoutParams(add_lp);

    //**** this is the line causing for error****/////
    layout.addView(adView);         
    return view;         
}

これは上記のフラグメントの xml コードです

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/chats_main_layout"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="@color/app_lite_theme"
   android:orientation="vertical" >

   <RelativeLayout
      android:id="@+id/chats_inner_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical" >

      <ListView
          android:id="@android:id/list"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:layout_marginLeft="8dp"
          android:layout_marginRight="8dp"
          android:scrollbars="none" />

   </RelativeLayout>
</RelativeLayout>

問題なく正常に動作しているフラグメントに使用しているこの同じコード。私はフラグメントのみの問題に直面しています。ここで何が問題ですか?誰かがこれに対する解決策を教えてください。

4

1 に答える 1

0

この部分で何かが間違っていると思います

  listview.setLayoutParams(add_lp);

そのはず

 addView.setLayoutParams(add_lp);   
于 2013-03-04T05:13:41.743 に答える