2013-03-08 14 views
0

我編碼爲Android定製的控制和我有下一個問題混淆自定義視圖例外: 當我嘗試調用View.inflate()靜態方法(看代碼波紋管),我得到的運行時異常android.view.InflateException。 有我的觀點膨脹方法對android系統中

public class NavigationView extends RelativeLayout implements NewRadioConst { 
     private TextView centerLabel; 
     private Context context; 
     private Typeface font; 
     private ImageView leftArrow; 
     private TextView leftLabel; 
     private View leftWrapper; 
     private ImageView rightArrow; 
     private TextView rightLabel; 
     private View rightWrapper; 

     public NavigationView(Context paramContext) 
     { 
     this(paramContext, null); 
     } 

     public NavigationView(Context paramContext, AttributeSet paramAttributeSet) 
     { 
     this(paramContext, paramAttributeSet, 0); 
     } 

     public NavigationView(Context paramContext, AttributeSet paramAttributeSet, int paramInt) 
     { 
     super(paramContext, paramAttributeSet, paramInt); 
     this.context = paramContext; 
     View.inflate(context, R.id.navView1, this); //this line take the exception 
     } 

} 

這裏的代碼是我儘量擡高

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/navView1" > 
    <FrameLayout android:id="@+id/centerWrapper" android:layout_centerInParent="true" style="@style/WrapContent"> 
     <ImageView android:layout_gravity="center" android:id="@+id/centerBg" android:layout_width="90.0dip" android:layout_height="30.0dip" android:src="@drawable/center_bg" /> 
     <TextView android:layout_gravity="center" android:id="@+id/centerLabel" android:text="@string/music" style="@style/TextLabel" /> 
    </FrameLayout> 
    <LinearLayout android:id="@+id/leftWrapper" android:clickable="true" android:layout_centerVertical="true" style="@style/WrapContent"> 
     <TextView android:textSize="12.0dip" android:layout_gravity="center_vertical" android:id="@+id/leftLabel" android:layout_marginLeft="8.0dip" android:text="@string/info" android:singleLine="true" style="@style/TextLabel" /> 
     <ImageView android:layout_gravity="center_vertical" android:id="@+id/leftArrow" android:layout_width="50.0dip" android:layout_height="30.0dip" android:src="@drawable/left_arrow" /> 
    </LinearLayout> 
    <LinearLayout android:id="@+id/rightWrapper" android:clickable="true" android:layout_centerVertical="true" style="@style/WrapContent"> 
     <ImageView android:layout_gravity="center_vertical" android:id="@+id/rightArrow" android:layout_width="50.0dip" android:layout_height="30.0dip" android:src="@drawable/right_arrow" /> 
     <TextView android:textSize="12.0dip" android:layout_gravity="center_vertical" android:id="@+id/rightLabel" android:layout_marginRight="8.0dip" android:text="@string/news" android:singleLine="true" style="@style/TextLabel" /> 
    </LinearLayout> 

</RelativeLayout> 

在這裏,XML是logcat的

03-08 11:37:00.585: E/AndroidRuntime(2374): FATAL EXCEPTION: main 
03-08 11:37:00.585: E/AndroidRuntime(2374): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.groupab.newradio/com.groupab.newradio.MusicActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class com.groupab.newradio.view.NavigationView 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.os.Looper.loop(Looper.java:123) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at java.lang.reflect.Method.invoke(Method.java:507) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at dalvik.system.NativeStart.main(Native Method) 
03-08 11:37:00.585: E/AndroidRuntime(2374): Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class com.groupab.newradio.view.NavigationView 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.createView(LayoutInflater.java:518) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.Activity.setContentView(Activity.java:1657) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at com.polontech.android.newradio.MusicActivity.onCreate(MusicActivity.java:12) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  ... 11 more 
03-08 11:37:00.585: E/AndroidRuntime(2374): Caused by: java.lang.reflect.InvocationTargetException 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at java.lang.reflect.Constructor.constructNative(Native Method) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.view.LayoutInflater.createView(LayoutInflater.java:505) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  ... 21 more 
03-08 11:37:00.585: E/AndroidRuntime(2374): Caused by: java.lang.RuntimeException: native typeface cannot be made 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.graphics.Typeface.<init>(Typeface.java:147) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at android.graphics.Typeface.createFromAsset(Typeface.java:121) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at com.groupab.newradio.view.NavigationView.<init>(NavigationView.java:41) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  at com.groupab.newradio.view.NavigationView.<init>(NavigationView.java:33) 
03-08 11:37:00.585: E/AndroidRuntime(2374):  ... 24 more 
+0

發佈logcat – Blackbelt 2013-03-08 13:48:38

+0

根據堆棧跟蹤,@bleckbelt掛起片刻 – abilash 2013-03-08 13:49:18

+1

,加載自定義字體時出錯。確保字體的路徑寫入正確,字體文件沒有損壞 – 2013-03-08 14:15:18

回答

0

的充氣方法需要另外一種佈局ID形式:R.layout.XXX。我將從頂層元素中移除標識符navView1,並引用xml佈局文件的名稱。因此,如果您命名了xml佈局文件navView1,那麼您將簡單引用爲R.layout.navView1。

+0

@Vsevywniy,爲你做了這個工作? – BrianPlummer 2013-03-12 14:27:49