2016-07-18 10 views
-1

私は自分のアクティビティで作成したクラスを呼び出そうとしていますが、残念ながら、自分のアクティビティを送信するはずのボタンをクリックすると、私はそれをデバッグしようとしており、常にsetContentView(R.layout.activity_draw_triangle)行で停止します。私はオンラインで見て、利用可能なさまざまな回答で問題を解決しようとしましたが、何もしません。ここでAndroid:残念なことに、Appが停止していますレイアウトの問題

import android.content.Context; 
    import android.content.pm.ActivityInfo; 
    import android.graphics.Bitmap; 
    import android.graphics.PathMeasure; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.util.Log; 
    import android.view.MotionEvent; 
    import android.view.View; 
    import android.content.Intent; 
    import android.widget.Button; 
    import android.graphics.Canvas; 
    import android.graphics.Color; 
    import android.graphics.Paint; 
    import android.graphics.Path; 
    import android.widget.EditText; 
    import android.widget.ImageView; 
    import android.widget.TextView; 
    import scribens.zarha.scribensapp.DrawingView; 

    import java.util.ArrayList; 

    public class DrawTriangleActivity extends AppCompatActivity { 
     DrawingView dv; 
     TextView instructions; 
     private ArrayList<Path> pointsToDraw = new ArrayList<Path>(); 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_draw_triangle); 
     Button button = (Button) findViewById(R.id.button); 
     instructions = (TextView) findViewById(R.id.textView2); 
     dv = (DrawingView) findViewById(R.id.dv); 
     dv = new DrawingView(this); 
     //setContentView(dv); 

    } 



    public void GoBack(View view) { 
     // Brings the user to the activity where the draw a line 
     Intent intent = new Intent(this, MainActivity.class); 
     Button button = (Button) findViewById(R.id.button); 
     startActivity(intent); 
    } 
} 

は)私はのonCreate(で

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.view.MotionEvent; 

import android.view.View; 
import android.util.AttributeSet; 


    public class DrawingView extends View { 

     private Path mPath; 
     private Paint mPaint; 
     private Bitmap mBitmap; 
     private Canvas mCanvas; 
     public int width; 
     public int height; 
     private Paint mBitmapPaint; 
     Context context; 
     private Paint circlePaint; 
     private Path circlePath; 


     public DrawingView(Context c) { 
      super(c); 
      context=c; 
      setupDrawing(); 
     } 

     private void setupDrawing(){ 
     //get drawing area setup for interaction 
      mPath = new Path(); 
      mPaint = new Paint(); 
      circlePaint = new Paint(); 
      circlePath = new Path(); 
      mBitmapPaint = new Paint(Paint.DITHER_FLAG); 

      mPaint.setAntiAlias(true); 
      mPaint.setDither(true); 
      mPaint.setColor(Color.BLUE); 
      mPaint.setStyle(Paint.Style.STROKE); 
      mPaint.setStrokeJoin(Paint.Join.ROUND); 
      mPaint.setStrokeCap(Paint.Cap.ROUND); 
      mPaint.setStrokeWidth(12); 

      circlePaint.setAntiAlias(true); 
      circlePaint.setColor(Color.BLUE); 
      circlePaint.setStyle(Paint.Style.STROKE); 
      circlePaint.setStrokeJoin(Paint.Join.MITER); 
      circlePaint.setStrokeWidth(4f); 
     } 

     @Override 
     protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
      super.onSizeChanged(w, h, oldw, oldh); 
      mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
      mCanvas = new Canvas(mBitmap); 
     } 


     @Override 
     protected void onDraw(Canvas canvas) { 
     //draw view 
      canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); 
      canvas.drawPath(mPath, mPaint); 
      canvas.drawPath(circlePath, circlePaint); 
     } 

     public float mX, mY; 
     public static final float TOUCH_TOLERANCE = 4; 

     public void touch_start(float x, float y) { 
      mPath.reset(); 
      mPath.moveTo(x, y); 
      mX = x; 
      mY = y; 

     } 

     public 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; 

       circlePath.reset(); 
       circlePath.addCircle(mX, mY, 30, Path.Direction.CW); 
      } 
     } 

     public void touch_up() { 
      mPath.lineTo(mX, mY); 
      circlePath.reset(); 
      // commit the path to our offscreen 
      mCanvas.drawPath(mPath, mPaint); 
      // kill this so we don't double draw 
      mPath.reset(); 

     } 

     @Override 
     public boolean onTouchEvent(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; 
     } 


    } 

最後に、私のXML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:screenOrientation="landscape" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="mygod.myname.mygodapp.DrawActivity"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Suivez le tracé du triangle" 
     android:id="@+id/textView2" 
     android:layout_gravity="center_horizontal" /> 

    <mygod.myname.mygodapp.DrawingView 
     android:layout_width="wrap_content" 
     android:layout_height="222dp" 
     android:id="@+id/dv" /> 

    <Button 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Retour" 
     android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:onClick="GoBack" 
     android:layout_gravity="right" /> 


</LinearLayout> 

スタックコード

07-18 15:55:56.003 28620-28620/mygod.myname.mygodapp W/ResourceType: Failure getting entry for 0x01080af7 (t=7 e=2807) (error -75) 
07-18 15:55:56.083 28620-28620/mygod.myname.mygodapp D/PhoneWindow: *FMB* installDecor mIsFloating : false 
07-18 15:55:56.083 28620-28620/mygod.myname.mygodapp D/PhoneWindow: *FMB* installDecor flags : -2139029248 
07-18 15:55:56.133 28620-28620/mygod.myname.mygodapp W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
07-18 15:55:56.333 28620-28746/mygod.myname.mygodapp D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 
07-18 15:55:56.353 28620-28620/mygod.myname.mygodapp V/ActivityThread: updateVisibility : ActivityRecord{1fd2b97 [email protected] {mygod.myname.mygodapp/mygod.myname.mygodapp.MainActivity}} show : true 
07-18 15:55:56.353 28620-28620/mygod.myname.mygodapp D/PhoneWindow: *FMB* isFloatingMenuEnabled mFloatingMenuBtn : null 
07-18 15:55:56.353 28620-28620/mygod.myname.mygodapp D/PhoneWindow: *FMB* isFloatingMenuEnabled return false 
07-18 15:55:56.383 28620-28620/mygod.myname.mygodapp D/SRIB_DCS: log_dcs ThreadedRenderer::initialize entered! 
07-18 15:55:56.383 28620-28746/mygod.myname.mygodapp I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: () 
                     OpenGL ES Shader Compiler Version: E031.25.03.06 
                     Build Date: 06/05/15 Fri 
                     Local Branch: LA.BF.1.1.1_RB1.05.01.00.042.032 
                     Remote Branch: 
                     Local Patches: 
                     Reconstruct Branch: 
07-18 15:55:56.383 28620-28746/mygod.myname.mygodapp I/OpenGLRenderer: Initialized EGL, version 1.4 
07-18 15:55:56.403 28620-28746/mygod.myname.mygodapp D/OpenGLRenderer: Get maximum texture size. GL_MAX_TEXTURE_SIZE is 4096 
07-18 15:55:56.403 28620-28746/mygod.myname.mygodapp D/OpenGLRenderer: Enabling debug mode 0 
07-18 15:55:56.553 28620-28620/mygod.myname.mygodapp I/Timeline: Timeline: Activity_idle id: [email protected] time:188182652 
07-18 15:55:56.553 28620-28620/mygod.myname.mygodapp I/Timeline: Timeline: Activity_idle id: [email protected] time:188182652 
07-18 15:55:59.833 28620-28620/mygod.myname.mygodapp D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN 
07-18 15:55:59.893 28620-28620/mygod.myname.mygodapp I/Timeline: Timeline: Activity_launch_request id:mygod.myname.mygodapp time:188185997 
07-18 15:55:59.943 28620-28620/mygod.myname.mygodapp W/ResourceType: Failure getting entry for 0x01080af7 (t=7 e=2807) (error -75) 
07-18 15:55:59.953 28620-28620/mygod.myname.mygodapp D/PhoneWindow: *FMB* installDecor mIsFloating : false 
07-18 15:55:59.953 28620-28620/mygod.myname.mygodapp D/PhoneWindow: *FMB* installDecor flags : -2139029248 
07-18 15:55:59.963 28620-28620/mygod.myname.mygodapp D/AndroidRuntime: Shutting down VM 
07-18 15:55:59.963 28620-28620/mygod.myname.mygodapp E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: mygod.myname.mygodapp, PID: 28620 
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{mygod.myname.mygodapp/mygod.myname.mygodapp.DrawTriangleActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class mygod.myname.mygodapp.DrawingView 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3124) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233) 
                       at android.app.ActivityThread.access$1000(ActivityThread.java:197) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:145) 
                       at android.app.ActivityThread.main(ActivityThread.java:6873) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
                      Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class mygod.myname.mygodapp.DrawingView 
                       at android.view.LayoutInflater.createView(LayoutInflater.java:623) 
                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                       at mygod.myname.mygodapp.DrawTriangleActivity.onCreate(DrawTriangleActivity.java:38) 
                       at android.app.Activity.performCreate(Activity.java:6550) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3077) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233) 
                       at android.app.ActivityThread.access$1000(ActivityThread.java:197) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:145) 
                       at android.app.ActivityThread.main(ActivityThread.java:6873) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
                      Caused by: java.lang.NoSuchMethodException: <init> [class android.content.Context, interface android.util.AttributeSet] 
                       at java.lang.Class.getConstructor(Class.java:531) 
                       at java.lang.Class.getConstructor(Class.java:495) 
                       at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:511) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
                       at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
                       at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                       at mygod.myname.mygodapp.DrawTriangleActivity.onCreate(DrawTriangleActivity.java:38) 
                       at android.app.Activity.performCreate(Activity.java:6550) 
                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3077) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233) 
                       at android.app.ActivityThread.access$1000(ActivityThread.java:197) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:145) 
                       at android.app.ActivityThread.main(ActivityThread.java:6873) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
+1

スタックトレースなしでクラッシュする問題を投稿しないでください –

+0

遅れて申し訳ありません投稿しました^^ – IHaveProblemsCoding101

答えて

0

DrawingViewにはコンストラクタDrawingView(Context、AttributeSet)が必要です。これは、XMLから膨張するときに呼び出されるものです(さまざまなパラメータが属性セットです)。また、テーマ作成の場合にのみ、DrawingView(Context、AttributeSet、int)を用意する必要があります。

+0

ありがとう、あなたの答えをありがとう!私は属性セットが必要だと思った。しかし、私は次の行を呼び出すとき: 'DV =新しいDrawingView(この);私は、 は、だから私はこれらを考慮することは、XMLのパラメータを変更する必要があり、変数attrsにに値として置くために何を知らない' を私の属性はあなたの答えに基づいて設定されていますか? – IHaveProblemsCoding101

+0

実際にDrawingViewコンテキスト属性セットはDrawActivityに適用できないと言われています – IHaveProblemsCoding101

+0

あなたはそれを間違ったファイルに入れています。それはDrawingViewクラスに入る必要があります。 –

0

を作成したクラスのコードですbutton.onClickLIstner()とonclicの中で使用するk listnerがインテントのコードを追加します。

+0

私はあなたが意図したコードの意味を理解していますか? – IHaveProblemsCoding101

+0

これはあなたの問題を解決するものではありません。与えられたエラーのスタックトレースをポストする必要があります。 – andre3wap

+0

ちょうどスタックをポーズしました:) – IHaveProblemsCoding101

関連する問題