Android View inflateException

Android View inflateException,第1张

概述我正在尝试创建一个自定义视图–手指画,我遇到此错误的麻烦,我不知道如何解决它.谁能告诉我有什么问题?logcat的:08-0408:34:01.171:E/AndroidRuntime(15664):java.lang.RuntimeException:UnabletostartactivityComponentInfo{com.boenka.mk/com.boenka.mk.Draw}:andro

我正在尝试创建一个自定义视图 – 手指画,我遇到此错误的麻烦,我不知道如何解决它.谁能告诉我有什么问题?

logcat的:

08-04 08:34:01.171: E/AndroIDRuntime(15664): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.boenka.mk/com.boenka.mk.Draw}: androID.vIEw.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1956)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.ActivityThread.access0(ActivityThread.java:123)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.os.Handler.dispatchMessage(Handler.java:99)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.os.Looper.loop(Looper.java:137)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.ActivityThread.main(ActivityThread.java:4424)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at java.lang.reflect.Method.invokeNative(Native Method)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at java.lang.reflect.Method.invoke(Method.java:511)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:551)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at dalvik.system.NativeStart.main(Native Method)08-04 08:34:01.171: E/AndroIDRuntime(15664): Caused by: androID.vIEw.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:691)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.rInflate(LayoutInflater.java:739)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:489)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:396)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.inflate(LayoutInflater.java:352)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at com.androID.internal.policy.impl.PhoneWindow.setContentVIEw(PhoneWindow.java:251)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.Activity.setContentVIEw(Activity.java:1835)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at com.boenka.mk.Draw.onCreate(Draw.java:49)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.Activity.performCreate(Activity.java:4465)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920)08-04 08:34:01.171: E/AndroIDRuntime(15664):    ... 11 more08-04 08:34:01.171: E/AndroIDRuntime(15664): Caused by: java.lang.classNotFoundException: com.boenka.mk.DrawPanel08-04 08:34:01.171: E/AndroIDRuntime(15664):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at java.lang.classLoader.loadClass(ClassLoader.java:501)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at java.lang.classLoader.loadClass(ClassLoader.java:461)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.createVIEw(LayoutInflater.java:552)08-04 08:34:01.171: E/AndroIDRuntime(15664):    at androID.vIEw.LayoutInflater.createVIEwFromTag(LayoutInflater.java:680)08-04 08:34:01.171: E/AndroIDRuntime(15664):    ... 21 more

这是我的DrawingPanel类:

public class DrawingPanel extends VIEw implements OntouchListener {    private Canvas mCanvas;    private Path mPath;    private Paint mPaint, mBitmapPaint;    private ArrayList<PathPoints> paths = new ArrayList<PathPoints>();    private ArrayList<PathPoints> undonePaths = new ArrayList<PathPoints>();    private Bitmap mBitmap;    private int x, y;    private int color;    public DrawingPanel(Context context, AttributeSet attrs) {        super(context, attrs);        this.color = color.BLACK;        // setFocusable(true);        // setFocusableIntouchMode(true);        this.setontouchListener(this);        mBitmapPaint = new Paint(Paint.DITHER_FLAG);        mPaint = new Paint();        mPaint.setAntiAlias(true);        mPaint.setDither(true);        mPaint.setcolor(color);        mPaint.setStyle(Paint.Style.stroke);        mPaint.setstrokeJoin(Paint.Join.ROUND);        mPaint.setstrokeCap(Paint.Cap.ROUND);        mPaint.setstrokeWIDth(3);        mPaint.setTextSize(30);        mPath = new Path();        paths.add(new PathPoints(mPath, color, false));        mCanvas = new Canvas();    }    public voID colorChanged(int color) {        this.color = color;        mPaint.setcolor(color);    }    @OverrIDe    protected voID onSizeChanged(int w, int h, int olDW, int oldh) {        super.onSizeChanged(w, h, olDW, oldh);        // mBitmap = AddReportItemActivity.mPhoto;        float xscale = (float) w / (float) mBitmap.getWIDth();        float yscale = (float) h / (float) mBitmap.getHeight();        if (xscale > yscale) // make sure both dimensions fit (use the                                // smaller scale)            xscale = yscale;        float newx = (float) w * xscale;        float newy = (float) h * xscale; // use the same scale for both                                            // dimensions        // if you want it centered on the display (black borders)        mBitmap = Bitmap.createScaledBitmap(mBitmap, this.getWIDth(),                this.getHeight(), true);        // mCanvas = new Canvas(mBitmap);    }    @OverrIDe    protected voID onDraw(Canvas canvas) {        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);        for (PathPoints p : paths) {            mPaint.setcolor(p.getcolor());            Log.v("", "color code : " + p.getcolor());            if (p.isTextToDraw()) {                canvas.drawText(p.textToDraw, p.x, p.y, mPaint);            } else {                canvas.drawPath(p.getPath(), mPaint);            }        }    }    private float mX, mY;    private static final float touch_TolERANCE = 0;    private voID touch_start(float x, float y) {        mPath.reset();        mPath.moveto(x, y);        mX = x;        mY = y;    }    private voID touch_move(float x, float y) {        float dx = Math.abs(x - mX);        float dy = Math.abs(y - mY);        if (dx >= touch_TolERANCE || dy >= touch_TolERANCE) {            mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);            mX = x;            mY = y;        }    }    private voID touch_up() {        mPath.lineto(mX, mY);        // commit the path to our offscreen        mCanvas.drawPath(mPath, mPaint);        // kill this so we don't double draw        mPath = new Path();        paths.add(new PathPoints(mPath, color, false));    }    @OverrIDe    public boolean ontouch(VIEw arg0, MotionEvent event) {        float x = event.getX();        float y = event.getY();        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:            touch_start(x, y);            invalIDate();            break;        case MotionEvent.ACTION_MOVE:            touch_move(x, y);            invalIDate();            break;        case MotionEvent.ACTION_UP:            touch_up();            invalIDate();            break;        }        return true;    }    public voID onClickUndo() {        if (paths.size() > 0) {            undonePaths.add(paths.remove(paths.size() - 1));            invalIDate();        } else {        }        // toast the user    }    public voID onClickRedo() {        if (undonePaths.size() > 0) {            paths.add(undonePaths.remove(undonePaths.size() - 1));            invalIDate();        } else {        }    }    class PathPoints {        private Path path;        // private Paint mPaint;        private int color;        private String textToDraw;        private boolean isTextToDraw;        private int x, y;        public PathPoints(Path path, int color, boolean isTextToDraw) {            this.path = path;            this.color = color;            this.isTextToDraw = isTextToDraw;        }        public PathPoints(int color, String textToDraw, boolean isTextToDraw,                int x, int y) {            this.color = color;            this.textToDraw = textToDraw;            this.isTextToDraw = isTextToDraw;            this.x = x;            this.y = y;        }        public Path getPath() {            return path;        }        public voID setPath(Path path) {            this.path = path;        }        public int getcolor() {            return color;        }        public voID setcolor(int color) {            this.color = color;        }        public String getTextToDraw() {            return textToDraw;        }        public voID setTextToDraw(String textToDraw) {            this.textToDraw = textToDraw;        }        public boolean isTextToDraw() {            return isTextToDraw;        }        public voID setTextToDraw(boolean isTextToDraw) {            this.isTextToDraw = isTextToDraw;        }        public int getX() {            return x;        }        public voID setX(int x) {            this.x = x;        }        public int getY() {            return y;        }        public voID setY(int y) {            this.y = y;        }    }    public int getcolor() {        return color;    }    public voID clear() {        invalIDate();    }    public voID setBrushSize(float size) {        mPaint.setstrokeWIDth(size);    }    public float getBrushSize() {        return mPaint.getstrokeWIDth();    }}

我的XML布局:

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/signImageParent"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="@androID:color/white"    androID:orIEntation="vertical" >    <com.boenka.mk.DrawingPanel        androID:ID="@+ID/signaturevIEw"        androID:layout_wIDth="fill_parent"        androID:layout_height="fill_parent" />    <linearLayout        androID:gravity="center_vertical"        androID:paddingtop="10dp"        androID:paddingBottom="10dp"        androID:layout_alignParentleft="true"        androID:ID="@+ID/control_panel"        androID:layout_wIDth="50dp"        androID:background="#00AEEC"        androID:layout_height="fill_parent"        androID:orIEntation="vertical" >        <button            androID:layout_gravity="center_horizontal"            androID:ID="@+ID/colorPicker"            androID:background="@drawable/color_picker"            androID:layout_wIDth="40dp"            androID:layout_margin="5dp"            androID:layout_height="40dp" />        <button            androID:layout_gravity="center_horizontal"            androID:ID="@+ID/save_img"            androID:layout_margin="5dp"            androID:background="@drawable/save_as"            androID:layout_wIDth="40dp"            androID:layout_height="40dp" />        <button            androID:layout_gravity="center_horizontal"            androID:ID="@+ID/brush_size"            androID:layout_margin="5dp"            androID:background="@drawable/brush_size"            androID:layout_wIDth="40dp"            androID:layout_height="40dp" />        <button            androID:layout_gravity="center_horizontal"            androID:ID="@+ID/settings"            androID:layout_margin="5dp"            androID:background="@drawable/setting"            androID:layout_wIDth="40dp"            androID:layout_height="40dp" />        <button            androID:layout_gravity="center_horizontal"            androID:ID="@+ID/prevIoUs"            androID:layout_margin="5dp"            androID:background="@drawable/prevIoUs"            androID:layout_wIDth="40dp"            androID:layout_height="40dp" />    </linearLayout>    <ImageVIEw        androID:ID="@+ID/imageVIEw1"        androID:layout_wIDth="fill_parent"        androID:layout_height="fill_parent"        androID:layout_toRightOf="@+ID/control_panel" /></relativeLayout>

解决方法:

从发布的Logcat输出:

Caused by: androID.vIEw.InflateException: Binary XML file line #9:                                            Error inflating class com.boenka.mk.DrawPanel........Caused by: java.lang.classNotFoundException: com.boenka.mk.DrawPanel

您似乎在xml布局文件中意外拼错了自定义视图的名称:

<com.boenka.mk.DrawPanel    androID:ID="@+ID/signaturevIEw"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent" />

看看将com.boenka.mk.DrawPanel更改为com.boenka.mk.DrawingPanel是否可以解决问题.

总结

以上是内存溢出为你收集整理的Android View inflateException全部内容,希望文章能够帮你解决Android View inflateException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1096130.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存