말씀해주신데로
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>
메인페스트에 프리라인 추가도 해놨구요
제발좀 가르침좀 내려주시길..........
혹시 몰라서 파일채로 압축해서 같이 올립니다




<View class="exam.monami153.FreeLine$MyView" android:id="@+id/MyView" android:layout_width="fill_parent" android:layout_height="fill_parent" />로 수정하세요. 이너클래스의 $ 는 안드로이드 내부 XML 파서가 제대로 인식하지 못합니다.