使用FragmentActivity会抛出InflateException

时间:2012-08-07 04:19:01

标签: android android-fragmentactivity

2活动中使用的常用片段

public class Ads extends Fragment {
    private View rootView ;
    private MoPubView adView ;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.ads, container, true) ;
        adView = (MoPubView) rootView.findViewById(R.id.adView) ;
        adView.setAdUnitId(LogoQuizUtil.MOPUB_AD_UNIT);     
        adView.loadAd();
        return rootView;
    }
}

片段布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ad_layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="bottom" >

    <com.mopub.mobileads.MoPubView
        android:id="@+id/adView"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_marginTop="10dp"
        android:gravity="bottom" />    
</LinearLayout>

我包含此片段的其他布局

 <fragment
    android:id="@+id/ads"
    android:name="myPackage.Ads"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="bottom" />

第一次调用setContentView(R.layout.ads)时,我得到一个异常,当第二个活动调用fragementactivity(Ads)时,我在setContentView(R.id.ads)中得到一个异常。 / p>

我得到的例外是

08-07 09:38:30.359: W/System.err(975): java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage/mypackage.SecondActivity}: android.view.InflateException: Binary XML file line #263: Error inflating class fragment

1 个答案:

答案 0 :(得分:3)

让我们从头开始。活动不是片段,片段不是活动。

您需要一个包含/控制片段的活动。为此,您可以扩展Activity(用于Honeycomb +开发)或使用支持库并扩展FragmentActivity。在本课程中,您将使用setContentView来设置包含片段的布局。

然后,您可以从该类调用片段管理器(getFragmentManagergetSupportFragmentManager,具体取决于您已扩展的类)。然后使用片段管理器创建,附加和分离片段。

片段(不是活动)的编码方式不同。它应该有一个onCreateView方法,它会扩展片段的布局并将其从活动返回到片段管理器。

然后通常会将onActivityCreated用于代码的其余部分(或其他任何需要的代码)。

进行更改以正确使用片段可能会或可能不会解决您的所有问题,因为我看到您在布局中使用某种自定义小部件,问题也可能存在。