me sale mensaje de error al intentar ejecutar mi proyecto. Quiero crear tres en raya para Android, y lo uso a medida Ver a continuación para crear Tic Tac Tabla de zócalo:android.view.InflateException: Binario archivo XML línea # 7: Error clase de inflado
package org.me.TicTacToe.ui;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
public class TicTacToeBoard extends View {
private Tile[][] tile = null; //Abstract class to create tiles in Tic Tac Toe Board
int boardWidth = 3; //It mean Tic Tac Toe board is consists of 3x3 tiles
private int width;
private int height;
private Paint brush;
public TicTacToeBoard(Context context) {
super(context);
brush = new Paint();
this.brush.setARGB(255, 0, 0, 0);
this.brush.setAntiAlias(true);
this.brush.setStyle(Style.STROKE);
this.brush.setStrokeWidth(5);
width = this.getWidth();
height = this.getHeight();
initBoard();
}
@Override
protected void onDraw(Canvas canvas) {
for (int i = 0; i < tile.length; i++) {
for (int j = 0; j < tile[0].length; j++) {
tile[i][j].draw(canvas, getResources(), j, i,
(this.getWidth() + 3)/tile.length,
this.getHeight()/tile[0].length);
}
}
int xs = this.getWidth()/boardWidth;
int ys = this.getHeight()/boardWidth;
for (int i = 0; i <= boardWidth; i++) {
canvas.drawLine(xs * i, 0, xs * i, this.getHeight(), brush);
}
for (int i = 0; i <= boardWidth; i++) {
canvas.drawLine(0, ys * i, this.getWidth(), ys * i, brush);
}
super.onDraw(canvas);
}
public void initBoard(){
tile = new Tile[boardWidth][boardWidth];
int xss = width/boardWidth;
int yss = height/boardWidth;
for (int row = 0; row < boardWidth; row++) {
for (int colmn = 0; colmn < boardWidth; colmn++) {
tile[row][colmn] = new TileEmpty(xss * colmn, row * yss);
// TileEmpty is extend class from Tile.
// TileEmpty represent empty tile in Tic Tac Toe
}
}
}
}
A continuación, lo coloco en el diseño de la actividad basada en XML como esto:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<org.me.TicTacToe.ui.TicTacToeBoard
android:id="@+id/game1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Así que obtengo un error de excepción fatal en mi ventana Eclipse LogCat:
AndroidRuntime(329): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.me.TicTacToe/org.me.TicTacToe.ui.TicTacToeActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class org.me.TicTacToe.ui.TicTacToeBoard
¿Cómo corregirlo?
líneas completa LogCat:
02-12 10:22:31.989: D/AndroidRuntime(329): Shutting down VM
02-12 10:22:31.989: W/dalvikvm(329): threadid=1: thread exiting with uncaught exception (group=0x40015560)
02-12 10:22:32.008: E/AndroidRuntime(329): FATAL EXCEPTION: main
02-12 10:22:32.008: E/AndroidRuntime(329): java.lang.RuntimeException:
Unable to start activity ComponentInfo{org.me.TicTacToe/org.rme.TicTacToe.ui.TicTacToeActivity}:
android.view.InflateException: Binary XML file line #18: Error inflating class org.me.TicTacToe.ui.TicTacToeBoard
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.os.Looper.loop(Looper.java:123)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.ActivityThread.main(ActivityThread.java:3683)
02-12 10:22:32.008: E/AndroidRuntime(329): at java.lang.reflect.Method.invokeNative(Native Method)
02-12 10:22:32.008: E/AndroidRuntime(329): at java.lang.reflect.Method.invoke(Method.java:507)
02-12 10:22:32.008: E/AndroidRuntime(329): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
02-12 10:22:32.008: E/AndroidRuntime(329): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
02-12 10:22:32.008: E/AndroidRuntime(329): at dalvik.system.NativeStart.main(Native Method)
02-12 10:22:32.008: E/AndroidRuntime(329): Caused by: android.view.InflateException: Binary XML file line #7:
Error inflating class org.me.TicTacToe.ui.TicTacToeBoard
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.createView(LayoutInflater.java:508)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-12 10:22:32.008: E/AndroidRuntime(329): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.Activity.setContentView(Activity.java:1657)
02-12 10:22:32.008: E/AndroidRuntime(329): at org.me.TicTacToe.ui.TicTacToeActivity.onCreate(TicTacToeActivity.java:24)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
02-12 10:22:32.008: E/AndroidRuntime(329): ... 11 more
02-12 10:22:32.008: E/AndroidRuntime(329): Caused by: java.lang.NoSuchMethodException: TicTacToeBoard(Context,AttributeSet)
02-12 10:22:32.008: E/AndroidRuntime(329): at java.lang.Class.getMatchingConstructor(Class.java:643)
02-12 10:22:32.008: E/AndroidRuntime(329): at java.lang.Class.getConstructor(Class.java:472)
02-12 10:22:32.008: E/AndroidRuntime(329): at android.view.LayoutInflater.createView(LayoutInflater.java:480)
02-12 10:22:32.008: E/AndroidRuntime(329): ... 21 more
Por favor, nos muestran más líneas de su Logcat. Creo que el motivo de la falla se encuentra en la lista anterior, en algún lugar de un constructor de la placa. – Olegas
@Olegas, aquí están mis líneas completas de logcat. Lo agregué a mi primera publicación – Spongeboss