首页 文章

扩展的EditText类不会实例化

提问于
浏览
0

我正在尝试扩展EditText类,但我似乎无法让它工作 . 我在我的公共类中创建了这个类MainActivity将Activity作为子类扩展:

public class EditText2 extends EditText
{

    public EditText2(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public EditText2(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    public EditText2(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }       
}

并尝试手动编码并使用Eclipse中的Graphical Layout选项卡编辑activity_main.xml以添加新类:

<first.words.firstwords.MainActivity.EditText2
    android:id="@+id/user_input"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:text="EditText2" >

    <requestFocus />
</first.words.firstwords.MainActivity.EditText2>

但我得到:

com.android中的com.android.layoutlib.bridge.impl.RenderSessionImpl.getDefaultProperties(RenderSessionImpl.java:1476)中的com.android.layoutlib.bridge.BridgeRenderSession.getDefaultProperties(BridgeRenderSession.java:68)中的java.lang.NullPointerException .ide.eclipse.adt.internal.editors.layout.gle2.ViewHierarchy.getDefaultProperties(ViewHierarchy.java:710)在com.android.ide.eclipse.adt.internal.editors.layout.properties.XmlProperty.getStringValue(XMLProperty中 . java:209)位于com.android.ide.eclipse.adt.internal.editors.layout的com.android.ide.eclipse.adt.internal.editors.layout.properties.XmlProperty.getValue(XmlProperty.java:221) . properties.XmlPropertyEditor.getText(XmlPropertyEditor.java:116)在com.android.ide.eclipse.adt.internal.editors.layout.properties.XmlPropertyEditor.paint(XmlPropertyEditor.java:131)在org.eclipse.wb.internal . org.eclipse.wb.internal.core.model.property.table.PropertyTable.drawCon中的core.model.property.table.PropertyTable.drawProperty(PropertyTable.java:1309)帐篷(PropertyTable.java:1151)位于org.eclipse.wb.internal.core.model.property的org.eclipse.wb.internal.core.model.property.table.PropertyTable.handlePaint(PropertyTable.java:1094) . table.PropertyTable.access $ 200(PropertyTable.java:64)atg.eclipse.wb.internal.core.model.property.table.PropertyTable $ 3.handleEvent(PropertyTable.java:187)org.eclipse.swt.widgets . org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1276)的eventTable.sendEvent(EventTable.java:84)org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1300)org .eclipse.swt.widgets.Widget.sendEvent(Widget.java:1285)在org.eclipse.swt.widgets.Control.gtk_expose_event(Control.java:2992)在org.eclipse.swt.widgets.Composite.gtk_expose_event(复合.java:709)org.eclipse.swt.wts.wtis.Canvas.gtk_expose_event(Canvas.java:167)org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1769)org.eclipse.swt上的org.eclipse.swt.widgets.Canvas.gtk_expose_event(Canvas.java:167) . org.eclipse.swt.widgets.Display.windowProc(Display.java:4377)中的widgets.Control.windowProc(Control.java:5116)位于org.eclipse.swt.wts.doc上的org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(本地方法),org.eclipse.swt . eventProc(Display.java:1193)维持在组织org.eclipse.swt.internal.gtk.OS._gdk_window_process_all_updates(本机方法)在org.eclipse.swt.internal.gtk.OS.gdk_window_process_all_updates(OS.java:5571) . eclipse.swt.widgets.Display.update(Display.java:4330)位于org.eclipse.swt.wts.Display.readAndDispatch的org.eclipse.swt.widgets.Display.runDeferredLayouts(Display.java:3588)上(显示 . java:3173)org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine $ 9.run(PartRenderingEngine.java:1053)org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332 )在org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)在org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)在org.eclipse.ui.internal.Workbench $ 5.run(Workbench.java:588)at o位于org.eclipse.ui.PlatformUI.createAndRunWorkbench的org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)的rg.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) PlatformUI.java:149)org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)在org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)在org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)在org.eclipse位于org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)a t java.lang.reflect.Method.invoke(Method.java:606)org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)org.eclipse.equinox.launcher.Main.basicRun(Main .java:584)org.eclipse.equinox.launcher.Main.run(Main.java:1438)org.eclipse.equinox.launcher.Main.main(Main.java:1414)

我运行应用程序时从activity_main.xml和ClassNotFoundException . 我用Google搜索并查看Extending a EditText in Android. What do I do wrong?What's the right way to extend EditText to give it additional “default” functionality等无济于事 .

任何人都可以看到我出错的地方,因为我花了好几个小时看自己,看不到它 .

1 回答

  • 0

    原因是因为你 EditText2 是内心的类 . 您应该使用 $ 将其引用如下():

    <view class="first.words.firstwords.MainActivity$EditText2"
    ...
    ...
    

    或者,将其移动到新的类文件(例如: EditText2.java ) .

    Here还有一些建议可供您试用 .

相关问题