Android的浏览inflateException [英] Android View inflateException

查看:121
本文介绍了Android的浏览inflateException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个自定义视图 - 手指画,和我有麻烦这个错误,我不知道如何解决它。谁能告诉我什么是错?

LogCat中:

  8月8号至4号:34:01.171:E / AndroidRuntime(15664):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.boenka.mk/com.boenka。 mk.Draw}:android.view.InflateException:二进制XML文件中的行#9:错误充气类com.boenka.mk.DrawPanel
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.ActivityThread.access $ 600(ActivityThread.java:123)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1147)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.os.Handler.dispatchMessage(Handler.java:99)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.os.Looper.loop(Looper.java:137)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.ActivityThread.main(ActivityThread.java:4424)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在java.lang.reflect.Method.invokeNative(本机方法)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在java.lang.reflect.Method.invoke(Method.java:511)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在dalvik.system.NativeStart.main(本机方法)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):android.view.InflateException:二进制XML文件中的行#9:错误充气类com.boenka.mk.DrawPanel所致
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.inflate(LayoutInflater.java:352)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.Activity.setContentView(Activity.java:1835)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在com.boenka.mk.Draw.onCreate(Draw.java:49)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.Activity.performCreate(Activity.java:4465)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):11 ...更多
八月8日至4日:34:01.171:E / AndroidRuntime(15664):抛出java.lang.ClassNotFoundException:产生的原因com.boenka.mk.DrawPanel
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在java.lang.ClassLoader.loadClass(ClassLoader.java:501)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在java.lang.ClassLoader.loadClass(ClassLoader.java:461)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.createView(LayoutInflater.java:552)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
八月8日至4日:34:01.171:E / AndroidRuntime(15664):21 ...更多
 

下面是我的DrawingPanel类:

 公共类DrawingPanel扩展视图实现OnTouchListener {

    私人帆布mCanvas;
    私人路径的mpath;
    私人油漆mPaint,m​​BitmapPaint;
    私人的ArrayList< PathPoints>路径=新的ArrayList< PathPoints>();
    私人的ArrayList< PathPoints> undonePaths =新的ArrayList< PathPoints>();
    私人位图mBitmap;
    私人诠释的x,y;
    私人诠释色彩;

    公共DrawingPanel(上下文的背景下,ATTRS的AttributeSet){
        超(背景下,ATTRS);
        this.color = Color.BLACK;
        // setFocusable(真正的);
        // setFocusableInTouchMode(真正的);
        this.setOnTouchListener(本);
        mBitmapPaint =新的油漆(Paint.DITHER_FLAG);
        mPaint =新的油漆();
        mPaint.setAntiAlias​​(真正的);
        mPaint.setDither(真正的);
        mPaint.setColor(颜色);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap​​(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(3);
        mPaint.setTextSize(30);

        的mpath =新路径();
        paths.add(新PathPoints(的mpath,色泽,FALSE));
        mCanvas =新的Canvas();
    }

    公共无效colorChanged(INT颜色){
        this.color =颜色;
        mPaint.setColor(颜色);
    }

    @覆盖
    保护无效onSizeChanged(INT W,INT小时,INT oldw,诠释oldh){
        super.onSizeChanged(W,H,oldw,oldh);
        // mBitmap = AddReportItemActivity.mPhoto;
        浮动的XScale =(浮点)W /(浮点)mBitmap.getWidth();
        浮动yscale =(浮点)H /(浮点)mBitmap.getHeight();
        如果(的XScale> yscale)//确保两个尺寸适合(使用
                                //规模较小)
            的XScale = yscale;
        浮动下一页末=(浮点)W *的XScale;
        浮newy =(浮点)H *的XScale; //使用相同的比例为
                                            //尺寸
        //如果你想让它围绕在显示屏上(黑色边框)
        mBitmap = Bitmap.createScaledBitmap(mBitmap,this.getWidth(),
                this.getHeight(),TRUE);
        // mCanvas =新的Canvas(mBitmap);
    }

    @覆盖
    保护无效的OnDraw(帆布油画){
        canvas.drawBitmap(mBitmap,0,0,mBitmapPaint);
        对于(PathPoints号码:路径){
            mPaint.setColor(p.getColor());
            Log.v(,颜色code:+ p.getColor());
            如果(p.isTextToDraw()){
                canvas.drawText(p.textToDraw,p.x,p.y,mPaint);
            } 其他 {
                canvas.drawPath(p.getPath(),mPaint);
            }
        }
    }

    私人浮动MX,我的;
    私有静态最终浮动TOUCH_TOLERANCE = 0;

    私人无效touch_start(浮X,浮动Y){
        mPath.reset();
        mPath.moveTo(X,Y);
        MX = X;
        我= Y;
    }

    私人无效TOUCH_MOVE(浮X,浮动Y){
        浮DX = Math.abs(X  -  MX);
        浮DY = Math.abs(Y  - 我的);
        如果(DX> = TOUCH_TOLERANCE || DY> = TOUCH_TOLERANCE){
            mPath.quadTo(MX,MY,(X + MX)/ 2,(Y +我)/ 2);
            MX = X;
            我= Y;
        }
    }

    私人无效touch_up(){
        mPath.lineTo(MX,MY);
        //提交路径,我们的屏幕外
        mCanvas.drawPath(的mpath,mPaint);
        //杀了这个,所以我们不重复抽奖
        的mpath =新路径();
        paths.add(新PathPoints(的mpath,色泽,FALSE));

    }

    @覆盖
    公共布尔onTouch(查看为arg0,MotionEvent事件){
        浮X = event.getX();
        浮动Y = event.getY();

        开关(event.getAction()){
        案例MotionEvent.ACTION_DOWN:
            touch_start(X,Y​​);
            无效();

            打破;
        案例MotionEvent.ACTION_MOVE:
            TOUCH_MOVE(X,Y);
            无效();
            打破;
        案例MotionEvent.ACTION_UP:

            润色();
            无效();

            打破;
        }
        返回true;
    }

    公共无效onClickUndo(){
        如果(paths.size()大于0){
            undonePaths.add(paths.remove(paths.size() -  1));
            无效();
        } 其他 {

        }
        //敬酒用户
    }

    公共无效onClickRedo(){
        如果(undonePaths.size()大于0){
            paths.add(undonePaths.remove(undonePaths.size() -  1));
            无效();
        } 其他 {

        }
    }

    类PathPoints {
        私人路径路径;
        //专用漆mPaint;
        私人诠释色彩;
        私人字符串textToDraw;
        私人布尔isTextToDraw;
        私人诠释的x,y;

        公共PathPoints(路径路径,诠释色彩,布尔isTextToDraw){
            this.path =路径;
            this.color =颜色;
            this.isTextToDraw = isTextToDraw;
        }

        公共PathPoints(INT色,串textToDraw,布尔isTextToDraw,
                INT的x,int y)对{
            this.color =颜色;
            this.textToDraw = textToDraw;
            this.isTextToDraw = isTextToDraw;
            this.x = X;
            this.y = Y;
        }

        公共路径getPath(){
            返回路径;
        }

        公共无效的setpath(路径路径){
            this.path =路径;
        }

        公众诠释的getColor(){
            返回的颜色;
        }

        公共无效setColor(INT颜色){
            this.color =颜色;
        }

        公共字符串getTextToDraw(){
            返回textToDraw;
        }

        公共无效setTextToDraw(字符串textToDraw){
            this.textToDraw = textToDraw;
        }

        公共布尔isTextToDraw(){
            返回isTextToDraw;
        }

        公共无效setTextToDraw(布尔isTextToDraw){
            this.isTextToDraw = isTextToDraw;
        }

        公众诠释的getX(){
            返回X;
        }

        公共无效setX的(INT X){
            this.x = X;
        }

        公众诠释getY()以{
            返回是;
        }

        公共无效塞蒂(int y)对{
            this.y = Y;
        }

    }

    公众诠释的getColor(){
        返回的颜色;
    }

    公共无效清除(){
        无效();
    }

    公共无效setBrushSize(浮点大小){
        mPaint.setStrokeWidth(大小);

    }

    公众持股量getBrushSize(){
        返回mPaint.getStrokeWidth();
    }
}
 

和我的XML布局:

 < XML版本=1.0编码=UTF-8&GT?;
< RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:ID =@ + ID / signImageParent
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:背景=@机器人:彩色/白
    机器人:方向=垂直>

    < com.boenka.mk.DrawingPanel
        机器人:ID =@ + ID / signatureview
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =FILL_PARENT/>

    <的LinearLayout
        机器人:重力=center_vertical
        机器人:paddingTop =10dp
        机器人:paddingBottom会=10dp
        机器人:layout_alignParentLeft =真
        机器人:ID =@ + ID / control_panel
        机器人:layout_width =50dp
        机器人:后台=#00AEEC
        机器人:layout_height =FILL_PARENT
        机器人:方向=垂直>

        <按钮
            机器人:layout_gravity =center_horizo​​ntal
            机器人:ID =@ + ID /颜色拾取
            机器人:背景=@可绘制/ color_pi​​cker
            机器人:layout_width =40dp
            机器人:layout_margin =5DP
            机器人:layout_height =40dp/>
        <按钮
            机器人:layout_gravity =center_horizo​​ntal
            机器人:ID =@ + ID / save_img
            机器人:layout_margin =5DP
            机器人:背景=@可绘制/ save_as
            机器人:layout_width =40dp
            机器人:layout_height =40dp/>

        <按钮
            机器人:layout_gravity =center_horizo​​ntal
            机器人:ID =@ + ID / brush_size
            机器人:layout_margin =5DP
            机器人:背景=@可绘制/ brush_size
            机器人:layout_width =40dp
            机器人:layout_height =40dp/>

        <按钮
            机器人:layout_gravity =center_horizo​​ntal
            机器人:ID =@ + ID /设置
            机器人:layout_margin =5DP
            机器人:背景=@可绘制/设置
            机器人:layout_width =40dp
            机器人:layout_height =40dp/>

        <按钮
            机器人:layout_gravity =center_horizo​​ntal
            机器人:ID =@ + ID / previous
            机器人:layout_margin =5DP
            机器人:背景=@可绘制/ previous
            机器人:layout_width =40dp
            机器人:layout_height =40dp/>
    < / LinearLayout中>

    < ImageView的
        机器人:ID =@ + ID / imageView1
        机器人:layout_width =FILL_PARENT
        机器人:layout_height =FILL_PARENT
        机器人:layout_toRightOf =@ + ID / control_panel/>

< / RelativeLayout的>
 

解决方案

从贴logcat的输出:

 产生的原因:android.view.InflateException:二进制XML文件中的行#9:
                                           错误充气类com.boenka.mk.DrawPanel
....
....
致:抛出java.lang.ClassNotFoundException:com.boenka.mk.DrawPanel
 

看来你不小心拼错了自定义视图的名称在XML布局文件:

 < com.boenka.mk.DrawPanel
    机器人:ID =@ + ID / signatureview
    机器人:layout_width =FILL_PARENT
    机器人:layout_height =FILL_PARENT/>
 

请参阅如果改变 com.boenka.mk.DrawPanel com.boenka.mk.DrawingPanel 解决问题

I'm trying to create a custom view - finger paint, and I'm having trouble with this error and I don't know how to fix it. Can anybody tell me what is wrong?

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.DrawPanel
08-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.access$600(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.DrawPanel
08-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 more
08-04 08:34:01.171: E/AndroidRuntime(15664): Caused by: java.lang.ClassNotFoundException: com.boenka.mk.DrawPanel
08-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

Here is my DrawingPanel class:

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();
    }
}

And my XML layout:

<?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>

解决方案

From the posted Logcat output:

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

It seems that you have accidentally misspelled the custom view's name in your xml layout file:

<com.boenka.mk.DrawPanel
    android:id="@+id/signatureview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

See if changing com.boenka.mk.DrawPanel to com.boenka.mk.DrawingPanel fixes the problem.

这篇关于Android的浏览inflateException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆