2011-02-27 10 views
11

İlk özel Görünüm alt sınıfım GraphView'u oluşturmaya ve onu düzen XML dosyama eklemeye çalışıyorum.Özel Görünümümün XML düzenine eklenmesi istisna atar

Ben this SO question bulundu ve projeme uygulamak için çalıştı, ama bir şey Eclipse IDE söylüyor çünkü yanlış gibi görünüyor: bir istisna

de.muza3000.graph.GraphView failed to instantiate. 

ve atar:

İşte
java.lang.NoSuchMethodException: de.muza3000.graph.GraphView.<init>(android.content.Context, android.util.AttributeSet) 
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(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(Unknown Source) 
at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:198) 
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:126) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:618) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:296) 
at com.android.layoutlib.bridge.Bridge.computeLayout(Bridge.java:396) 
at com.android.ide.common.rendering.LayoutLibrary.createLegacySession(LayoutLibrary.java:382) 
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:276) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(Unknown Source) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.pageChange(Unknown Source) 
at org.eclipse.ui.part.MultiPageEditorPart$2.widgetSelected(MultiPageEditorPart.java:290) 
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234) 
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:2743) 
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1429) 
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:4066) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657) 
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) 
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) 
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) 
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) 
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) 
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) 
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:369) 
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:619) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1407) 

olduğunu benim düzen:

<?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"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello"/> 
    <de.muza3000.graph.GraphView 
     android:layout_width="fill_parent"/> 
</LinearLayout> 

Ve kod:

package de.muza3000.graph; 

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

public class GraphView extends View { 


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


    GraphView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
    } 

    GraphView(Context context) 
    { 
     super(context); 
    } 

} 

cevap

21

Kurucular için erişim değiştiricisini genel olarak değiştirin.

+1

Vay, işe yaradı! Çok teşekkürler! – muza3000

+0

Bunun için çok teşekkürler. – Lunchbox