Android: InflateException on composite component -
i'm creating pretty complex composite component throws inflateexception unknown cause. able replicate error in simplified version below, component 2 text views. in identifying error or tracking down appreciated.
composite_component.xml
<?xml version="1.0" encoding="utf-8"?> <com.cc.compositecomponent      xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="wrap_content">     <textview         android:text="one"         android:layout_width="fill_parent"         android:layout_height="wrap_content"/>     <textview         android:text="two"         android:layout_width="fill_parent"         android:layout_height="wrap_content"/> </com.cc.compositecomponent>   compositecomponent.java
package com.cc;  import android.app.activity; import android.content.context; import android.util.attributeset; import android.widget.linearlayout;  public class compositecomponent extends linearlayout {      public compositecomponent(context context) {     super(context);     }      public compositecomponent(context context, attributeset attributes){         super(context, attributes);     }      protected void onfinishinflate() {         super.onfinishinflate();         ((activity)getcontext()).getlayoutinflater().inflate(r.layout.composite_component, this);     } }   compositeactivity.java
package com.cc;  import android.app.activity; import android.os.bundle;  public class compositeactivity extends activity {      public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.composite_component);     } }   androidmanifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="com.cc"     android:versioncode="1"     android:versionname="1.0"> <uses-sdk android:minsdkversion="8" />  <application android:icon="@drawable/icon" android:label="compositecomponent">     <activity android:name="compositeactivity"               android:label="compositecomponent">         <intent-filter>             <action android:name="android.intent.action.main" />             <category android:name="android.intent.category.launcher" />         </intent-filter>     </activity>  </application>        
in composite_component.xml file, try changing line:
<com.cc.compositecomponent   to following:
<linearlayout   and then, create second layout activity passes setcontentview():
file: composite_activity_layout.xml
<com.cc.compositecomponent     android:id="@+id/my_composite"     <!-- other stuff ->>   file: compositeactivity.java
protected void oncreate( bundle state ) {     super.oncreate( state );      setcontentview(r.layout.composite_activity_layout);     // ... }   what looks doing causing recursive layout inflation.  inflate compositecomponent, , in onfinishinflate() method, compositecomponent inflates copy of itself.
also, may want investigate use of android's merge tag avoid having linearlayout hanging around.
Comments
Post a Comment