2012-04-25 12 views
2

OvalShape、a.k.a. android.graphics.drawable.shapes.OvalShapeを描画しようとする非常に単純なカスタムビューがあります。したがって、SDKのネイティブです。Android XMLのグラフィカルレイアウトビューア - カスタムビューをインスタンス化できません。クラスが見つかりませんか?

これは、エラーのタイトルです:

com.dan.test.ui.ArcButton failed to instantiate. 

これはエラー体である:

java.lang.ClassNotFoundException: android.graphics.drawable.shapes.OvalShape 
at com.android.ide.eclipse.adt.internal.resources.manager.ProjectClassLoader.findClass(ProjectClassLoader.java:105) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at java.lang.Class.getDeclaredConstructors0(Native Method) 
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
at java.lang.Class.getConstructor0(Unknown Source) 
at java.lang.Class.getConstructor(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:327) 
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:166) 
at com.android.layoutlib.bridge.android.BridgeInflater.loadCustomView(BridgeInflater.java:205) 
at com.android.layoutlib.bridge.android.BridgeInflater.createViewFromTag(BridgeInflater.java:133) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:626) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:296) 
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:279) 
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:318) 
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:325) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:372) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1361) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1115) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:941) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.partActivated(LayoutEditorDelegate.java:477) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.partBroughtToTop(LayoutEditorDelegate.java:487) 
at org.eclipse.ui.internal.PartListenerList$2.run(PartListenerList.java:87) 
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
at org.eclipse.core.runtime.Platform.run(Platform.java:888) 
at org.eclipse.ui.internal.PartListenerList.fireEvent(PartListenerList.java:57) 
at org.eclipse.ui.internal.PartListenerList.firePartBroughtToTop(PartListenerList.java:85) 
at org.eclipse.ui.internal.PartService.firePartBroughtToTop(PartService.java:208) 
at org.eclipse.ui.internal.WorkbenchPagePartList.firePartBroughtToTop(WorkbenchPagePartList.java:76) 
at org.eclipse.ui.internal.WorkbenchPagePartList.fireActiveEditorChanged(WorkbenchPagePartList.java:52) 
at org.eclipse.ui.internal.PartList.setActiveEditor(PartList.java:162) 
at org.eclipse.ui.internal.WorkbenchPage.makeActiveEditor(WorkbenchPage.java:1355) 
at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3629) 
at org.eclipse.ui.internal.WorkbenchPage.requestActivation(WorkbenchPage.java:3159) 
at org.eclipse.ui.internal.PartPane.requestActivation(PartPane.java:279) 
at org.eclipse.ui.internal.EditorPane.requestActivation(EditorPane.java:98) 
at org.eclipse.ui.internal.PartPane.setFocus(PartPane.java:325) 
at org.eclipse.ui.internal.EditorPane.setFocus(EditorPane.java:127) 
at org.eclipse.ui.internal.PartStack.presentationSelectionChanged(PartStack.java:837) 
at org.eclipse.ui.internal.PartStack.access$1(PartStack.java:823) 
at org.eclipse.ui.internal.PartStack$1.selectPart(PartStack.java:137) 
at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:133) 
at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:269) 
at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:278) 
at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(DefaultTabFolder.java:1) 
at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$2.handleEvent(DefaultTabFolder.java:88) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062) 
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:774) 
at org.eclipse.swt.custom.CTabFolder.setSelection(CTabFolder.java:2746) 
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1433) 
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:257) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) 
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123) 
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) 
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1410) 
at org.eclipse.equinox.launcher.Main.main(Main.java:1386) 

これは私のレイアウトXMLの一部です:

<com.dan.test.ui.ArcButton 
android:id="@+id/btn_arc" 
android:layout_width="100dip" 
android:layout_height="75dip" 
android:layout_gravity="center" 
/> 

これは私のonDrawでありますArcButtonクラスのコード:

@Override 
protected void onDraw(Canvas canvas) 
{ 
    super.onDraw(canvas); 

    // SETUP 
    int r = (int) radius; 

    // BG WHITE 
    int cx = this.getWidth()/2, cy = this.getHeight()/2; 
    Paint bg_paint = new Paint(); 
    bg_paint.setAntiAlias(true); 
    bg_paint.setARGB(255, 255, 255, 255); 
    ShapeDrawable bg = new ShapeDrawable(new OvalShape()); // If removed, then ArcShape causes the same CNFE error 
    canvas.drawCircle(cx, cy, r, bg_paint); 

    // ROTATING ARC 
    ShapeDrawable drawable = new ShapeDrawable(new ArcShape(-90, s)); 
    drawable.getPaint().setColor(0xff74AC23); 
    drawable.setBounds(cx - (r-2), cy - (r-2), cx + (r-2), cy + (r-2)); 
    drawable.draw(canvas); 

    invalidate(); 
} 

編集:また、私はこれらのコンストラクタを既に用意しています。そうであっても、エラーがまだ発生して:

public ArcButton(Context context, AttributeSet attrs, int defStyle) 
{ 
    super(context, attrs, defStyle); 
} 

public ArcButton(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

public ArcButton(Context context) 
{ 
    super(context); 
} 
+0

あなたがアプリケーションの実行中またはグラフィカルエディタでそれを見ながらこれを得ますか? –

+0

@KumarBibek彼のスタックトレースから、このエラーはグラフィカルエディタで見るときに発生しているようです。 –

答えて

1

は、多分あなたはまた、いくつかの違いとクリーンなプロジェクトを持って、私のコードを見つけます。

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.graphics.drawable.ShapeDrawable; 
import android.graphics.drawable.shapes.ArcShape; 
import android.graphics.drawable.shapes.OvalShape; 
import android.util.AttributeSet; 
import android.view.View; 

public class Button1 extends View 
{ 
    private int radius = 100; 

    /** 
    * @param context 
    * @param attrs 
    */ 
    public Button1(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     super.onDraw(canvas); 

     // SETUP 
     int r = (int) radius ; 

     // BG WHITE 
     int cx = this.getWidth()/2, cy = this.getHeight()/2; 
     Paint bg_paint = new Paint(); 
     bg_paint.setAntiAlias(true); 
     bg_paint.setARGB(255, 255, 255, 255); 
     ShapeDrawable bg = new ShapeDrawable(new OvalShape()); // If removed, then ArcShape causes the same CNFE error 
     canvas.drawCircle(cx, cy, r, bg_paint); 

     // ROTATING ARC 
     ShapeDrawable drawable = new ShapeDrawable(new ArcShape(-90, 60)); 
     drawable.getPaint().setColor(0xff74AC23); 
     drawable.setBounds(cx - (r-2), cy - (r-2), cx + (r-2), cy + (r-2)); 
     drawable.draw(canvas); 

     invalidate(); 
    } 
} 

enter image description here

+0

それは既にありました。すべての適切なコンストラクタが正しく配置されているため、エラーが発生しています。 – drhr

+0

あなたのコードを使用していますが、これは問題なく動作しています。あなたの必要があれば私はあなたに私のコードを送るでしょう。 –

+0

ADTのグラフィカルなXMLレイアウトビューアでArcButtonをエラーなく表示できますか? – drhr

関連する問題