我正在尝试扩展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 回答
原因是因为你
EditText2
是内心的类 . 您应该使用$
将其引用如下():或者,将其移动到新的类文件(例如:
EditText2.java
) .Here还有一些建议可供您试用 .