Android的 - InflateException:二进制XML文件中的行#7 [英] Android - InflateException: Binary XML file line #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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人: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屋!