말씀해주신데로

 

Context context, AttributeSet attrs

 

이것들 추가도 해보고 했는데 안되더라구요

 

 컴파일상에서도 에러는 안뜨는데

  

로그켓 에러를 보면

 05-21 07:58:45.080: ERROR/AndroidRuntime(1340): java.lang.RuntimeException: Unable to start activity ComponentInfo{exam.monami153/exam.monami153.monami153}: android.view.InflateException: Binary XML file line #66: Error inflating class exam.monami153.FreeLine.MyView
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.os.Looper.loop(Looper.java:123)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.ActivityThread.main(ActivityThread.java:4363)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at java.lang.reflect.Method.invokeNative(Native Method)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at java.lang.reflect.Method.invoke(Method.java:521)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at dalvik.system.NativeStart.main(Native Method)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340): Caused by: android.view.InflateException: Binary XML file line #66: Error inflating class exam.monami153.FreeLine.MyView
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:621)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.Activity.setContentView(Activity.java:1622)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at exam.monami153.monami153.onCreate(monami153.java:16)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     ... 11 more
05-21 07:58:45.080: ERROR/AndroidRuntime(1340): Caused by: java.lang.ClassNotFoundException: exam.monami153.FreeLine.MyView in loader dalvik.system.PathClassLoader@43d0b780
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.createView(LayoutInflater.java:466)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
05-21 07:58:45.080: ERROR/AndroidRuntime(1340):     ... 22 more

이렇습니다

 

 

05-21 07:58:45.080: ERROR/AndroidRuntime(1340): Caused by: java.lang.ClassNotFoundException: exam.monami153.FreeLine.MyView in loader dalvik.system.PathClassLoader@43d0b780

 

 

이게 문제인거 같은데

 

 

전에 답변주셨던것처럼

 

Context context, AttributeSet attrs 다 추가하고 해봤는데도 저렇게 뜨네요;;

 

 

로그켓을 보고 에러를 확실하게 볼정도의 실력이 안되는지라;;

 

소스도 같이 올려봅니다

 

먼저 메인입니다

 

 package exam.monami153;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.Button;

public class monami153 extends Activity {
 View mMain, mSub, mHow;

 

 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
   
       
        mMain = findViewById(R.id.mainpage);
        mSub = findViewById(R.id.sub);
        mHow = findViewById(R.id.how);
       
       
        findViewById(R.id.Calcul).setOnClickListener(ClickListener);
        findViewById(R.id.How).setOnClickListener(ClickListener);
        findViewById(R.id.Exit).setOnClickListener(ClickListener);
        findViewById(R.id.Calcul).setOnClickListener(ClickListener);
        findViewById(R.id.Clear).setOnClickListener(ClickListener);
        findViewById(R.id.Back).setOnClickListener(ClickListener);
        findViewById(R.id.backm).setOnClickListener(ClickListener);
    }
   
    Button.OnClickListener ClickListener = new Button.OnClickListener() {
     public void onClick(View v) {
      mMain.setVisibility(View.INVISIBLE);
      mSub.setVisibility(View.INVISIBLE);
      mHow.setVisibility(View.INVISIBLE);
      
      switch (v.getId()) {
      case R.id.Calcul:
       mSub.setVisibility(View.VISIBLE);
       break;
      case R.id.Clear:
       onResume();
       mSub.setVisibility(View.VISIBLE);
       break;
      case R.id.Back:
       mSub.setVisibility(View.INVISIBLE);
       mMain.setVisibility(View.VISIBLE);
       break;
      case R.id.How:
       mHow.setVisibility(View.VISIBLE);
       break;
      case R.id.backm:
       mHow.setVisibility(View.INVISIBLE);
       mMain.setVisibility(View.VISIBLE);
       break;
      case R.id.Exit:
        finish();
      }
     }
    };
}

 

 

프리라인은 책에 나온걸 그대로 가져와봤습니다

 

 package exam.monami153;

import java.util.*;

import android.app.*;
import android.content.*;
import android.graphics.*;
import android.net.Uri;
import android.os.*;
import android.util.AttributeSet;
import android.view.*;

public class FreeLine extends Activity {
 public static final Uri MyView = null;
 private MyView vw;
 ArrayList<Vertex> arVertex;
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        vw = new MyView(this);
        setContentView(vw);

        arVertex = new ArrayList<Vertex>();
    }

 
 public class Vertex {
  Vertex(float ax, float ay, boolean ad) {
   x = ax;
   y = ay;
   Draw = ad;
  }
  float x;
  float y;
  boolean Draw;
 }
 
    protected class MyView extends View {
     Paint mPaint;

        public MyView(Context context, AttributeSet attrs, int defSytle) {
         super(context, attrs, defSytle);
     }
     
     
     public MyView(Context context, AttributeSet attrs) {
      super(context, attrs);
     }
     
 
     public MyView(Context context) {
         super(context);
        

   mPaint = new Paint();
   mPaint.setColor(Color.BLACK);
   mPaint.setStrokeWidth(3);
   mPaint.setAntiAlias(true);
     }
      
     
     
     public void onDraw(Canvas canvas) {
   canvas.drawColor(0xffe0e0e0);
   

   for (int i=0;i<arVertex.size();i++) {
    if (arVertex.get(i).Draw) {
     canvas.drawLine(arVertex.get(i-1).x, arVertex.get(i-1).y,
       arVertex.get(i).x, arVertex.get(i).y, mPaint);
    }
   }
  }


     public boolean onTouchEvent(MotionEvent event) {
      if (event.getAction() == MotionEvent.ACTION_DOWN) {
       arVertex.add(new Vertex(event.getX(), event.getY(), false));
       return true;
      }
      if (event.getAction() == MotionEvent.ACTION_MOVE) {
       arVertex.add(new Vertex(event.getX(), event.getY(), true));
       invalidate();
       return true;
      }
      return false;
     }
 }
}


그리고 메인 XML입니다

 

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    >

    <FrameLayout
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     >
    <LinearLayout
     android:id="@+id/mainpage"
     android:orientation="vertical"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:gravity="center"
     >
 <TextView 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text = "KPU "
     android:textSize="45px"
     android:gravity="center"
     />
 <TextView 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text = "Hand writing recognition calculator"
     android:textSize="30px"
     android:gravity="center"
     />
    <TextView 
     android:layout_width="wrap_content"
     android:layout_height="50px"
        android:gravity="center"
     />
     
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/Calcul"
  android:text="Calculating"
  />
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/How"
  android:text="How to use"
  />
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/Exit"
  android:text="Exit"
  />
 </LinearLayout>
 <LinearLayout
  android:id="@+id/sub"
  android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="vertical"
     android:visibility="invisible">
   
   <exam.monami153.FreeLine.MyView
    android:id="@+id/MyView"
   android:layout_width="fill_parent"
       android:layout_height="fill_parent"
      />
     <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="리절트가 들어갈 곳"
     />
  <RelativeLayout
      android:orientation="vertical"
     android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:gravity="bottom">
  <Button
   android:id="@+id/Calcul"
   android:layout_width="107px"
   android:layout_height="wrap_content"
   android:text="Calculate"
   android:layout_alignParentLeft="true"
   android:layout_alignParentBottom="true"
   />
  <Button
   android:id="@+id/Back"
   android:layout_width="107px"
   android:layout_height="wrap_content"
   android:text="Back"
   android:layout_toRightOf="@id/Calcul"
   android:layout_alignParentBottom="true"
   />
  <Button
   android:id="@+id/Clear"
   android:layout_width="107px"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_alignParentBottom="true"
   android:text="Clear"
   />
  </RelativeLayout>
 </LinearLayout>
  <LinearLayout
  android:id="@+id/how"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:gravity="center"
     android:orientation="vertical"
     android:visibility="invisible"
     android:layout_margin="10px">
  <TextView 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text = "사용법"
      android:textSize="45px"
      android:gravity="center"
      />
     <TextView 
      android:layout_width="wrap_content"
      android:layout_height="50px"
         android:gravity="center"
      />
  <TextView 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text = "흰색화면에 글을 필기인식으로 써 넣으시고 칼큘레이트 버튼을 눌러주시면 계산되어 리절트가 나옵니다"
      android:textSize="25px"
      android:gravity="center"
      />
      <TextView 
      android:layout_width="wrap_content"
      android:layout_height="50px"
         android:gravity="center"
      />
     <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="뒤로"
      android:id="@+id/backm"
      android:layout_alignParentRight="true"
   android:layout_alignParentBottom="true"
      />
 </LinearLayout>
 </FrameLayout>
</LinearLayout>


 

메인페스트에 프리라인 추가도 해놨구요

 

 

 

제발좀 가르침좀 내려주시길..........

 

 

혹시 몰라서 파일채로 압축해서 같이 올립니다