Android的 - InflateException:二进制XML文件中的行#7 [英] Android - InflateException: Binary XML file line #7

查看:270
本文介绍了Android的 - InflateException:二进制XML文件中的行#7的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道,我有以下来源$ C ​​$ C文件:

MainActivity.java

 包com.example.bmtitest2;进口android.os.Bundle;
进口android.app.Activity;
进口android.app.AlertDialog;公共类MainActivity延伸活动{    私人JavaAbstractionLayer abstr;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        abstr =(JavaAbstractionLayer)findViewById(R.id.abstraction);
        abstr.invalidate();    }    公共无效写入(字符串消息){
        新AlertDialog.Builder(本).setMessage(消息).show();
    }    @覆盖
    公共无效完成(){
        的onDestroy();    }}

JavaAbstractionLayer.java

 包com.example.bmtitest2;进口android.content.Context;
进口android.graphics.Canvas;
进口android.graphics.Color;
进口android.view.MotionEvent;
进口android.view.View;公共类JavaAbstractionLayer扩展视图{    静态的 {
        的System.loadLibrary(gestureDetector);
    }    GenericView classToCall;    私人最终诠释PINK = Color.rgb(255,192,203);    公共JavaAbstractionLayer(上下文的背景下){
        超级(上下文);
    }    公共无效setClassToCall(的ViewController classToCall){
        this.classToCall = classToCall;
    }    私人本地字符串callGestureAnalysis(浮点previousX,浮previousY,浮currentX,浮currentY);    @覆盖
    公共布尔onTouchEvent(MotionEvent事件){
        串VAL = callGestureAnalysis(event.getX(),event.getY(),event.getX(),event.getY());
        布尔问题;
        如果(val.equals(点击)){
            classToCall.drawCircle(event.getX(),event.getY());
            问题= TRUE;
        }其他{
            问题= FALSE;
        }
        返回的问题;
    }    @覆盖
    保护无效的onDraw(帆布油画){
        canvas.drawCircle(classToCall.getCircleX(),classToCall.getCircleY(),classToCall.getCircleRadius(),classToCall.getCirclePaint());
    }
}

GenericView.java

 包com.example.bmtitest2;进口android.graphics.Paint;公共接口GenericView {
    公共无效画圆(浮法X,浮法Y);
    公众持股量getCircleX();
    公众持股量getCircleY();
    公众持股量getCircleRadius();
    市民漆getCirclePaint();
}

ViewController.java

 包com.example.bmtitest2;进口android.content.Context;
进口android.graphics.Color;
进口android.graphics.Paint;公共类的ViewController实现GenericView {
    私人浮动circleX;
    私人浮动circleY;
    私人涂料circlePaint;
    私人浮动circleRadius;    私人JavaAbstractionLayer aLayer;    公众的ViewController(上下文的背景下)
    {
        circleX = 0;
        circleY = 0;
        circleRadius = 100;
        circlePaint =新的油漆();
        circlePaint.setColor(Color.RED);
        circlePaint.setStyle(Paint.Style.FILL);
        aLayer =新JavaAbstractionLayer(背景);
        aLayer.setClassToCall(本);
    }    @覆盖
    公众持股量getCircleX(){
        返回circleX;
    }    公共无效setCircleX(浮动circleX){
        this.circleX = circleX;
    }    @覆盖
    公众持股量getCircleY(){
        返回circleY;
    }    公共无效setCircleY(浮动circleY){
        this.circleY = circleY;
    }    市民漆getCirclePaint(){
        返回circlePaint;
    }    公共无效setCirclePaint(漆circlePaint){
        this.circlePaint = circlePaint;
    }    公众持股量getCircleRadius(){
        返回circleRadius;
    }    公共无效setCircleRadius(浮动circleRadius){
        this.circleRadius = circleRadius;
    }    公共JavaAbstractionLayer getaLayer(){
        返回aLayer;
    }    公共无效setaLayer(JavaAbstractionLayer aLayer){
        this.aLayer = aLayer;
    }    公共无效setCircleCords(浮法X,浮法Y){
        circleX = X;
        circleY = Y;
    }    公共无效画圆(INT circleX,诠释circleY){
        浮动circleXF =(浮点)circleX;
        浮动circleYF =(浮点)circleY;
        画圆(circleXF,circleYF);
    }    公共无效setCircleRad(浮点R){
        circleRadius = R;
    }    @覆盖
    公共无效画圆(浮动circleX,浮circleY){
        setCircleCords(circleX,circleY);
    }
}

activity_main.xml中

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    工具:上下文=MainActivity。>        < com.example.bmtiTest2
        机器人:ID =@ + ID /抽象
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent/>< / RelativeLayout的>

在运行时,我得到一个 InflateException:二进制XML文件中的行#7 。我似乎根本无法找出什么会导致我的错误。请注意,我并​​没有包括我的C和在这个岗位C ++源$ C ​​$ C,因为我不认为这是错误的原因。


解决方案

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=MainActivity。>    < com.example.bmtiTest2
    机器人:ID =@ + ID /抽象
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/>< / RelativeLayout的>

什么是com.example.bmtiTest2?这仅仅是你的包名,但为什么在这里?如果您定义的视图(也许com.example.bmtiTest2.MyView)中,XML应该是这样的:

 <的RelativeLayout的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
工具:上下文=MainActivity。>    < com.example.bmtiTest2.MyView
    机器人:ID =@ + ID /抽象
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent/>< / RelativeLayout的>

I was wondering, I have the following source code files:

MainActivity.java

package com.example.bmtitest2;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;

public class MainActivity extends Activity {

    private JavaAbstractionLayer abstr;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        abstr = (JavaAbstractionLayer) findViewById(R.id.abstraction);
        abstr.invalidate();

    }

    public void write(String message) {
        new AlertDialog.Builder(this).setMessage(message).show();
    }

    @Override
    public void finish(){
        onDestroy();

    }

}

JavaAbstractionLayer.java

package com.example.bmtitest2;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.View;

public class JavaAbstractionLayer extends View {

    static {
        System.loadLibrary("gestureDetector");
    }

    GenericView classToCall;

    private final int PINK = Color.rgb(255, 192, 203);

    public JavaAbstractionLayer(Context context) {
        super(context);
    }

    public void setClassToCall(ViewController classToCall) {
        this.classToCall = classToCall;
    }

    private native String callGestureAnalysis(float previousX, float previousY, float currentX, float currentY);

    @Override
    public boolean onTouchEvent(MotionEvent event){
        String val = callGestureAnalysis(event.getX(), event.getY(), event.getX(), event.getY());
        boolean issue;
        if(val.equals("TAP")) {
            classToCall.drawCircle(event.getX(), event.getY());
            issue = true;
        } else {
            issue = false;
        }
        return issue;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawCircle(classToCall.getCircleX(), classToCall.getCircleY(), classToCall.getCircleRadius(), classToCall.getCirclePaint());
    }
}

GenericView.java

package com.example.bmtitest2;

import android.graphics.Paint;

public interface GenericView {
    public void drawCircle(float x, float y);
    public float getCircleX();
    public float getCircleY();
    public float getCircleRadius();
    public Paint getCirclePaint();
}

ViewController.java

package com.example.bmtitest2;

import android.content.Context;
import android.graphics.Color;
import android.graphics.Paint;

public class ViewController implements GenericView {
    private float circleX;
    private float circleY;
    private Paint circlePaint;
    private float circleRadius;

    private JavaAbstractionLayer aLayer;

    public ViewController(Context context)
    {
        circleX = 0;
        circleY = 0;
        circleRadius = 100;
        circlePaint = new Paint();
        circlePaint.setColor(Color.RED);
        circlePaint.setStyle(Paint.Style.FILL);
        aLayer = new JavaAbstractionLayer(context);
        aLayer.setClassToCall(this);
    }

    @Override
    public float getCircleX() {
        return circleX;
    }

    public void setCircleX(float circleX) {
        this.circleX = circleX;
    }

    @Override
    public float getCircleY() {
        return circleY;
    }

    public void setCircleY(float circleY) {
        this.circleY = circleY;
    }

    public Paint getCirclePaint() {
        return circlePaint;
    }

    public void setCirclePaint(Paint circlePaint) {
        this.circlePaint = circlePaint;
    }

    public float getCircleRadius() {
        return circleRadius;
    }

    public void setCircleRadius(float circleRadius) {
        this.circleRadius = circleRadius;
    }

    public JavaAbstractionLayer getaLayer() {
        return aLayer;
    }

    public void setaLayer(JavaAbstractionLayer aLayer) {
        this.aLayer = aLayer;
    }

    public void setCircleCords(float x, float y) {
        circleX = x;
        circleY = y;
    }

    public void drawCircle(int circleX, int circleY) {
        float circleXF = (float)circleX;
        float circleYF = (float)circleY;
        drawCircle(circleXF, circleYF);
    }   

    public void setCircleRad(float r) {
        circleRadius = r;
    }

    @Override
    public void drawCircle(float circleX, float circleY) {
        setCircleCords(circleX, circleY);
    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

        <com.example.bmtiTest2
        android:id="@+id/abstraction"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

On runtime, I am getting an InflateException: Binary XML file line #7. I can't seem to figure out at all what would be causing my error. Note that I did not include my C and C++ source code in this post, as I don't think it would be the cause of the error.

解决方案

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

    <com.example.bmtiTest2
    android:id="@+id/abstraction"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</RelativeLayout>

What is the com.example.bmtiTest2? It is just your package name,but why is it here? If your defined your view(maybe com.example.bmtiTest2.MyView),the xml should be this:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

    <com.example.bmtiTest2.MyView
    android:id="@+id/abstraction"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</RelativeLayout>

这篇关于Android的 - InflateException:二进制XML文件中的行#7的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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