0

원을 그리면서 커브를 만드는 커스텀 뷰를 만들었습니다. 내 목표는 내 XML보기를 표시하는 것입니다. 내 XML에서 사용자 지정보기 클래스를 부 풀려고 노력하고 있지만 그것은 내게 오류를주고있다. 내 목표는 framelayout 내 mainactivity에서 그것을 보여줍니다. 나는 내 코드와 오류 보고서를 올리고있다. 좀 봐주세요. 그리고 다른 접근법이 있다면 알려주세요. 감사안드로이드에서 팽창하는 커스텀 뷰

public class CusImage extends View { 
    private Paint myPaint; 
    private Paint myPaint2; 
    private Paint myFramePaint; 
    private RectF bigOval; 
    public TextView value; 
    private RectF bigOval2; 
    private float myStart; 
    private float mySweep; 
    private float SWEEP_INC = 3; 
    private float SWEEP_INC2 = 5; 
    // Use this flag to control the direction of the arc's movement 
    private boolean addToCircle = false; 

    public CusImage(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     if (isInEditMode()) { 
      init(); 
     } 
    } 


    private void init() { 
     myPaint = new Paint(); 

     myPaint.setAntiAlias(true); 

     myPaint.setStyle(Paint.Style.STROKE); 

     myPaint.setColor(Color.BLUE); 

     myPaint.setStrokeWidth(10); 

     bigOval = new RectF(40, 10, 280, 250); 

     myFramePaint = new Paint(); 
     myFramePaint.setAntiAlias(true); 
     myFramePaint.setColor(Color.TRANSPARENT); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     // value = (TextView) findViewById(R.id.txt); 
     canvas.drawRect(bigOval, myFramePaint); 
     canvas.drawArc(bigOval, myStart, mySweep, false, myPaint); 
     myStart = -90; 

     mySweep += SWEEP_INC2; 

     invalidate(); 
    } 
} 

이 내 XML에 팽창하려고하는 방법입니다 : 로그 캣

Exception raised during rendering: loader 
(instance of com/android/ide/eclipse/adt/internal/resources/ 
manager/ProjectClassLoader): attempted duplicate class definition for name:  
    "com/example/progressframework/MainActivity$CusImage" 
    Exception details are logged in Window > Show View > Error Log 

그리고 :

<com.example.progressframework.MainActivity.CusImage 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

</com.example.progressframework.MainActivity.CusImage> 

을 그리고 아래의 최신 오류가

08-26 12:26:33.702: E/AndroidRuntime(6428): FATAL EXCEPTION: main 
08-26 12:26:33.702: E/AndroidRuntime(6428): java.lang.NullPointerException 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.GLES20Canvas.drawRect(GLES20Canvas.java:1136) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at com.example.progressframework.CusImage.onDraw(CusImage.java:60) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.draw(View.java:13944) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12838) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12880) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.draw(View.java:13657) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.drawChild(ViewGroup.java:3083) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12833)  
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12880) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.draw(View.java:13657) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.drawChild(ViewGroup.java:3083) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12833) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12880) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.draw(View.java:13657) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.drawChild(ViewGroup.java:3083) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12833) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12880) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.draw(View.java:13657) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.drawChild(ViewGroup.java:3083) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2920) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.draw(View.java:13947) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.widget.FrameLayout.draw(FrameLayout.java:467) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2224) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12838) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.View.getDisplayList(View.java:12880) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1411) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1359) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewRootImpl.draw(ViewRootImpl.java:2367) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2239) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1872) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.os.Handler.handleCallback(Handler.java:730) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.os.Handler.dispatchMessage(Handler.java:92) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.os.Looper.loop(Looper.java:137) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at java.lang.reflect.Method.invoke(Method.java:525) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
08-26 12:26:33.702: E/AndroidRuntime(6428):  at dalvik.system.NativeStart.main(Native Method) 
+0

그 클래스가 com.example.progressframework.MainActivity 패키지에 있는지 확인 했습니까 ?? – Piyush

+0

예 패키지에 들어 있습니다. 사실 MainActivity 클래스 안에이 클래스를 만들었습니다. contentview를 CusImage 클래스로 설정하면 괜찮습니다. 그러나 나는이 견해를 XML로 원한다. – Vyshakh

+0

cusImage에 대해 별도의 클래스를 만들면 gud가됩니다. 따라서 mainActivity를 무시하고 com.example.progressframework.cusImaage에 의해 사용됩니다. –

답변

2

클래스 n Context 및 AttributeSet 매개 변수로 eeds ctor도 별도의 컴파일 단위에 넣습니다.

+0

예를 제공합니다. 내 클래스 생성자에서 특성 세트를 추가했습니다. – Vyshakh

+2

if (isInEditMode())? – pskink

+0

Ohk 고마워. 그것은 issu를 해결했다. 이클립스 XML 편집기에서 저를 사용하라고 제안했습니다. 그것이 내가 코드에 넣은 이유입니다. 이제 코드를 제거 했으므로 코드가 제대로 작동합니다. 고마워. – Vyshakh

0

cusImage 클래스에서 다음 코드를 시도해보십시오. 된 onDraw 방법에서

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    // TODO Auto-generated method stub 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    invalidate(); 

}

제거 무효화().