2011-04-27 53 views
0

我得到了以下錯誤消息:UnsupportedOperationException異常使用paint.getTextBounds

main.xml: java.lang.UnsupportedOperationException 

堆棧跟蹤說:

java.lang.UnsupportedOperationException 
at android.graphics.Paint_Delegate.nativeGetStringBounds(Paint_Delegate.java:897) 
at android.graphics.Paint.nativeGetStringBounds(Paint.java) 
at android.graphics.Paint.getTextBounds(Paint.java:1798) 

在我的代碼,我建立了一個簡單的測試案例找出問題的所在:

public class test extends View { 

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

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

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

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

    Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); 
    p.setColor(Color.GREEN); 
    p.setTextAlign(Align.CENTER); 

    canvas.drawText("hello", 100, 100, p); 

    Rect bounds = new Rect(); 
    p.getTextBounds("2", 0, 1, bounds); 
} 

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 
} 

任何想法發生了什麼問題?

繼承人的完整的堆棧跟蹤:

java.lang.UnsupportedOperationException 
at android.graphics.Paint_Delegate.nativeGetStringBounds(Paint_Delegate.java:897) 
at android.graphics.Paint.nativeGetStringBounds(Paint.java) 
at android.graphics.Paint.getTextBounds(Paint.java:1798) 
at myOwnSpace.testproject.test.onDraw(test.java:39) 
at android.view.View.draw(View.java:9029) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2508) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2506) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2506) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 
at android.view.View.draw(View.java:9032) 
at android.view.ViewGroup.drawChild(ViewGroup.java:2508) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2123) 
at android.view.View.draw(View.java:9032) 
at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:473) 
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:316) 
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:283) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1506) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1312) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1043) 
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:870) 
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.pageChange(LayoutEditor.java:365) 
at org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java:1067) 
at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:607) 
at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.selectDefaultPage(AndroidXmlEditor.java:308) 
at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:213) 
at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138) 
at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348) 
at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670) 
at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465) 
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) 
at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:289) 
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2863) 
at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2768) 
at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2760) 
at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2711) 
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2707) 
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2691) 
at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2682) 
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:651) 
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:610) 
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:365) 
at org.eclipse.jdt.internal.ui.javaeditor.EditorUtility.openInEditor(EditorUtility.java:168) 
at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:229) 
at org.eclipse.jdt.ui.actions.OpenAction.run(OpenAction.java:208) 
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:274) 
at org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:250) 
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerActionGroup.handleOpen(PackageExplorerActionGroup.java:373) 
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart$4.open(PackageExplorerPart.java:526) 
at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48) 
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:845) 
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) 
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) 
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:843) 
at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1131) 
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1235) 
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:264) 
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:258) 
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:298) 
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3783) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1375) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1398) 
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1383) 
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1195) 
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3629) 
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284) 
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(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) 
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) 
at org.eclipse.equinox.launcher.Main.run(Main.java:1408) 
+0

我可能是錯的,但我猜你的問題是不是你認爲它是。發佈更多的堆棧跟蹤 - 通常有一個「由...引起」的條目。另外,發佈你的main.xml文件。 – Squonk 2011-04-27 21:20:09

+0

@MisterSquonk我不太確定我做錯了什麼,我只是張貼整個堆棧跟蹤,但沒有找到「造成」部分 – Alx 2011-04-27 23:28:35

回答

0

這工作:

p.getTextBounds(new String("2"), 0, 1, bounds); 
相關問題