Android SDK - NullPointerException

Status
Niet open voor verdere reacties.

roeney12

Gebruiker
Lid geworden
23 jul 2008
Berichten
105
Hallo,

Ik ben bezig met een schoolproject in Eclipse met de Android SDK. Nu probeer ik een Player Class in een GameView te krijgen, maar ontstaat er een NullPointerException. Ik heb alleen geen idee waarom deze er is.

GameView class:
Code:
package com.example.mb2;

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

public class GameView extends View {

	public Paint paint;
	public Player player;
	
	public GameView(Context context) {
	    super(context);
	    init();
	}

	public GameView(Context context, AttributeSet attrs) {
	    super(context, attrs);
	    init();
	}

	public GameView(Context context, AttributeSet attrs, int defStyle) {
	    super(context, attrs, defStyle);
	    init();
	}
	
	private void init()
	{
	    player = new Player(this);
		paint = new Paint();
	}
	
	@Override
	protected void onDraw(Canvas canvas)
	{
		super.onDraw(canvas);
		canvas.drawRGB(0, 0, 0);

		paint.setColor( 0xffffffff );
		
		player.setPosition(10, 120);
		player.draw(canvas, paint);
		
		invalidate();
		
	}
}

De Player Class:
Code:
package com.example.mb2;

import android.graphics.*;
import android.view.View;

public class Player {
	private Bitmap image;
	private Point position;
	
	public Player( View parentView ) {
		
		position.x = 100;
		position.y = 120;
		
		image = BitmapFactory.decodeResource(parentView.getResources(), R.raw.player);
	}
	
	public void draw( Canvas canvas, Paint paint){
		canvas.drawBitmap(image, position.x, position.y, paint);
	}
	
	public void setPosition( int a_x, int a_y){
		position.x = a_x;
		position.y = a_y;
	}
	
	public Point getPosition(){
		return position;
	}
}

De Error:
Code:
The following classes could not be instantiated:
- com.example.mb2.GameView (Open Class, Show Error Log)
See the Error Log (Window > Show View) for more details.
Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse

java.lang.NullPointerException
	at com.example.mb2.Player.<init>(Player.java:12)
	at com.example.mb2.GameView.init(GameView.java:30)
	at com.example.mb2.GameView.<init>(GameView.java:20)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:442)
	at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:194)
	at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
	at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:132)
	at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806)
	at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
	at android.view.LayoutInflater.rInflate(LayoutInflater.java:782)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
	at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
	at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:401)
	at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:329)
	at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:517)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1584)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1309)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.reloadLayoutSwt(GraphicalEditorPart.java:1817)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.access$0(GraphicalEditorPart.java:1755)
	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener$1.run(GraphicalEditorPart.java:1749)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4147)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3764)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	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:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

Iemand die hier meer verstand van heeft?
Alvast bedankt!
 
Je bent in de player klasse vergeten om position te instantieren:

[cpp]
public Player( View parentView ) {
position = new Point();
position.x = 100;
position.y = 120;

image = BitmapFactory.decodeResource(parentView.getResources(), R.raw.player);
}
[/cpp]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan