2011-11-08 86 views
4

我在logcat中遇到了這個奇怪的錯誤,我嘗試了一些想到解決它並仍然得到它的東西。 這裏是logcat的:android.view.InflateException:二進制XML文件

11-08 12:30:26.184: E/AndroidRuntime(4396): FATAL EXCEPTION: main 
11-08 12:30:26.184: E/AndroidRuntime(4396): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dm.test/com.dm.test.ui.BitCanvasActivity}: android.view.InflateException: Binary XML file line #5: Error inflating class com.dm.test.ui.BitCanvasActivity$CanvasView 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.ActivityThread.access$1500(ActivityThread.java:124) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.os.Looper.loop(Looper.java:123) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.ActivityThread.main(ActivityThread.java:3806) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at java.lang.reflect.Method.invoke(Method.java:507) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at dalvik.system.NativeStart.main(Native Method) 
11-08 12:30:26.184: E/AndroidRuntime(4396): Caused by: android.view.InflateException: Binary XML file line #5: Error inflating class com.dm.test.ui.BitCanvasActivity$CanvasView 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.createView(LayoutInflater.java:508) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.inflate(LayoutInflater.java:383) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.Activity.setContentView(Activity.java:1716) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at com.dm.test.ui.BitCanvasActivity.onCreate(BitCanvasActivity.java:55) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  ... 11 more 
11-08 12:30:26.184: E/AndroidRuntime(4396): Caused by: java.lang.NoSuchMethodException: CanvasView(Context,AttributeSet) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at java.lang.Class.getMatchingConstructor(Class.java:643) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at java.lang.Class.getConstructor(Class.java:472) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  at android.view.LayoutInflater.createView(LayoutInflater.java:480) 
11-08 12:30:26.184: E/AndroidRuntime(4396):  ... 21 more 

,這是我的xml:

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:bitdraw="http://schemas.android.com/apk/res/com.dm.test" > 

    <view 
    class="com.dm.test.ui.BitCanvasActivity$CanvasView" 
    android:id="@+id/backgroundz" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

    <com.dm.test.widget.ActionButtons 
     android:id="@+id/btn_actions" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_marginBottom="135dp" 
     android:layout_gravity="bottom|center_horizontal" /> 


    <com.dm.test.widget.ColorPicker 
     android:id="@+id/color_picker" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center_horizontal" 
     android:orientation="horizontal" 
     bitdraw:colors="@array/color_picker_colors" 
     bitdraw:cols="3" 
     bitdraw:fils="5" /> 

</merge> 

,並在的.java線55的這樣的:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.bit_canvas); //line 55 
    mActionButtons = (ActionButtons) findViewById(R.id.btn_actions); 
    mColorPicker = (ColorPicker) findViewById(R.id.color_picker); 

,這是內部的一部分等級:

public class CanvasView extends View { 

    public CanvasView(Context c) { 
     super(c); 
    } 

    public CanvasView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CanvasView (Context c, AttributeSet atr, int defstyle){ 
     super(c, atr,defstyle); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { ... } 

任何幫助將非常感激,因爲我認真地跑出了想法:S

+0

您需要聲明內部類爲靜態。 看到這個[上計算器的答案] [1] [1]:http://stackoverflow.com/questions/4483433/error-inflating-inner-class-view –

回答

3

嘗試更改您的佈局爲下面的一個,因爲在那種方式,你將被稱爲類項目。

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:bitdraw="http://schemas.android.com/apk/res/com.dm.test" > 

    <com.dm.test.ui.BitCanvasActivity.CanvasView 
    android:id="@+id/backgroundz" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

    <com.dm.test.widget.ActionButtons 
     android:id="@+id/btn_actions" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:layout_marginBottom="135dp" 
     android:layout_gravity="bottom|center_horizontal" /> 


    <com.dm.test.widget.ColorPicker 
     android:id="@+id/color_picker" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|center_horizontal" 
     android:orientation="horizontal" 
     bitdraw:colors="@array/color_picker_colors" 
     bitdraw:cols="3" 
     bitdraw:fils="5" /> 

</merge> 

如果這不起作用嘗試讓你的課如jordi所說。

+0

酷非常感謝。 – androide

相關問題