2011-08-29 6 views
1

코드를 그래픽 레이아웃을 accesing 동안 발생 ??널 포인터 예외에는

감사합니다.

불완전한 코드는 죄송합니다. 코드를 누락 -

package pkg.digitalDial; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.os.CountDownTimer; 

    import pkg.digitalDial.DigitalDial; 

    public class DigitalDialActivity extends Activity { 
      /** Called when the activity is first created. */ 
     DigitalDial speedDial ; 
     CountDownTimer speedTimer; 

      @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.digitaldial);   
       speedDial = (DigitalDial) findViewById(R.id.dial1); 

       speedDial.setTitle("Speed"); 
       speedDial.setValue(2.0f); 
      }    
    } 

오류 로그 것은 : - 항상 전체 스택 추적을 게시하는 것이 좋습니다

java.lang.NullPointerException 
    at android.graphics.Canvas_Delegate.drawText(Canvas_Delegate.java:276) 
    at android.graphics.Canvas.drawText(Canvas.java) 
    at pkg.digitalDial.DigitalDial.drawTitle(DigitalDial.java:62) 
    at pkg.digitalDial.DigitalDial.onDraw(DigitalDial.java:48) 
    at android.view.View.draw(View.java:6740) 
    at android.view.ViewGroup.drawChild(ViewGroup.java:1640) 
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    at android.view.ViewGroup.drawChild(ViewGroup.java:1638) 
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    at android.view.ViewGroup.drawChild(ViewGroup.java:1638) 
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    at android.view.View.draw(View.java:6743) 
    at android.view.ViewGroup.drawChild(ViewGroup.java:1640) 
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 
    at android.view.View.draw(View.java:6743) 
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:466) 
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:320) 
    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:380) 
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1310) 
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1075) 
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:901) 
    at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditor.pageChange(LayoutEditor.java:403) 
    at org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java:1076) 
    at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:601) 
    at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.selectDefaultPage(AndroidXmlEditor.java:314) 
    at com.android.ide.eclipse.adt.internal.editors.AndroidXmlEditor.addPages(AndroidXmlEditor.java:219) 
    at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138) 
    at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:357) 
    at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:662) 
    at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462) 
    at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) 
    at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:286) 
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2857) 
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2762) 
    at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2754) 
    at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2705) 
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) 
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2701) 
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2685) 
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2676) 
    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:361) 
    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:842) 
    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.JFaceUtil$1.run(JFaceUtil.java:48) 
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) 
    at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:840) 
    at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1101) 
    at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1205) 
    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.Widget.sendEvent(Widget.java:1003) 
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3880) 
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3473) 
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) 
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) 
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) 
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) 
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) 
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493) 
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113) 
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) 
    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:368) 
    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:559) 
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) 
    at org.eclipse.equinox.launcher.Main.run(Main.java:1311) 
+0

스택 추적을 게시하거나 널 포인터 예외가 발생하는 라인을 정확히 식별 할 수 있습니까? –

+1

titlePaint가 null이 아닌 타이틀입니까? –

답변

1

당신이 예외에 대한 도움을 요청합니다. 그렇게하면 정확한 문제를 파악하는 것이 훨씬 쉬워집니다!

우리가 추측 할 수있는 것은 없지만 그게 전부라면 NullPointerExceptiontitle 필드에서 나온 것입니다. 여기 :

public void drawTitle(Canvas canvas) { 
    String title = getTitle(); 
    canvas.drawText(title,30, 48, titlePaint);    
} 

당신은 title의 값을 사용하고 난 어디 초기화 표시되지 않습니다. 그 String 참조는 대부분 null입니다.

1

당신은 생성자로 페인트 설정을 이동해야합니다

public DigitalDial(Context context) {   
    super(context);   

    titlePaint = new Paint();   
    titlePaint.setStyle(Paint.Style.FILL);   
    titlePaint.setTypeface(Typeface.DEFAULT_BOLD);   
    //paint.setTextAlign(Paint.Align.RIGHT);   
    titlePaint.setColor(Color.YELLOW);   
    titlePaint.setAntiAlias(true);   
    titlePaint.setTextSize(28); 

} 

당신은 효율성을 위해 아주 나쁜 각 무승부로 새로운 페인트 개체를 만들 수 있습니다. 또한 사용자 정의보기를 인스턴스화하는 방법을 알고 있기 때문에 오버로드 된 생성자가 필요하지 않으며 응용 프로그램에서 세 가지 다른 방법으로는 수행 할 가능성이 낮습니다.

플러스 산티아고는 따라서 당신은 상단에있는 말을해야 바로 당신이 당신의 타일이 null이됩니다 그릴 처음 : = ""

개인 문자열 제목;