2012-02-12 9 views
5

को बढ़ाने में त्रुटि मुझे मेरी परियोजना चलाने की कोशिश करते समय त्रुटि संदेश मिलता है। मैं Android के लिए टिक टैक टो बनाना चाहते हैं, और मैं कस्टम दृश्य का उपयोग नीचे टिक टैक टो बोर्ड बनाने के लिए:android.view.InflateException: बाइनरी एक्सएमएल फ़ाइल लाइन # 7: कक्षा

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

इसके बाद, मैं इस तरह XML आधारित गतिविधि लेआउट में रखें:

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

तो मैं अपने ग्रहण 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 

इसे कैसे ठीक करें?

पूर्ण 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 
+0

कृपया, हमें अपने logcat की अधिक लाइनों दिखा। मेरा मानना ​​है कि दुर्घटना का कारण बोर्ड के कन्स्ट्रक्टर में कहीं भी सूचीबद्ध है। – Olegas

+0

@ ओलेगस, यहां मेरी पूरी लॉगकट लाइनें हैं। मैंने इसे अपने पहले पोस्ट – Spongeboss

उत्तर

27

आप TicTacToeBoard(Context, Attributeset) के लिए निर्माता खो रहे हैं। उदाहरण के लिए this question देखें।

संपादित करें: यह LogCat तुम सिर्फ पोस्ट में सही नहीं है:

Caused by: java.lang.NoSuchMethodException: TicTacToeBoard(Context,AttributeSet) 
+0

में आपके उत्तर के लिए धन्यवाद दिया, यह वास्तव में काम करता है! यह मेरे 2 दिनों के सिरदर्द को समाप्त करता है – Spongeboss

+2

@ स्पंजबॉस कृपया इसे सही उत्तर के रूप में स्वीकार करें। thnx ... यह काम करता है :) –

+0

+1 "कारण के कारण" खंड देखने के लिए। मेरा "क्लास नॉटफाउंड अपवाद" था और जिस कारण से मैंने अपनी कक्षा का नाम गलत लिखा था –

संबंधित मुद्दे