Java 尝试对空对象引用调用虚方法(NullpointerException)
有人能帮忙吗?我一直试图在AndroidStudio中运行视差图像视图,但不断收到一条异常消息,表示“试图在空对象引用上调用虚拟方法”。它甚至澄清了这是一个NullPointerException。以蓝色突出显示的消息似乎已出现 这在第行:Java 尝试对空对象引用调用虚方法(NullpointerException),java,android,nullpointerexception,Java,Android,Nullpointerexception,有人能帮忙吗?我一直试图在AndroidStudio中运行视差图像视图,但不断收到一条异常消息,表示“试图在空对象引用上调用虚拟方法”。它甚至澄清了这是一个NullPointerException。以蓝色突出显示的消息似乎已出现 这在第行: backgrounds.add(new Background(this.context, screenWidth, screenHeight, "skyline", 0, 80, 50)); 在我的视差课上 在第行: setContentView(para
backgrounds.add(new Background(this.context, screenWidth, screenHeight, "skyline", 0, 80, 50));
在我的视差课上
在第行:
setContentView(parallaxView);
在我的视差活动课上
所以,我想这就是异常发生的地方。我复制并粘贴了完整的异常消息和以下类:
06-28 20:11:48.297 2420-2420/com.hfad.parallaxproject E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hfad.parallaxproject, PID: 2420
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.hfad.parallaxproject/com.hfad.parallaxproject
.ParallaxActivity}: java.lang.NullPointerException:
Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.NullPointerException:
Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
at com.hfad.parallaxproject.ParallaxView.<init>(ParallaxView.java:49)
at com.hfad.parallaxproject.ParallaxActivity.onCreate(ParallaxActivity.java:25)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:111
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
您忘记初始化ArrayList
ArrayList<Background> backgrounds = new ArrayList<>();
ArrayList backgrounds=new ArrayList();
initializebyArrayList backgrounds=new ArrayList()代码>问题已解决!谢谢Sanoop,DeKaNszn和GhostCat!不是我的反对票;但一个解释是:你可能不知道基本上所有的NPE问题都会很快被“复制”出来。因此,回答这些问题或多或少是令人沮丧的。
package com.hfad.parallaxproject;
import android.app.Activity;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Display;
public class ParallaxActivity extends Activity {
//Our object to handle the View
private ParallaxView parallaxView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get a Display object to access screen details
Display display = getWindowManager().getDefaultDisplay();
//Load the resolution into a Point object
Point resolution = new Point();
display.getSize(resolution);
//And finally set the view for our game
parallaxView = new ParallaxView(this, resolution.x, resolution.y);
//Make our parallaxView the view for the Activity
setContentView(parallaxView);
}
//If the Activity is paused make sure to pause our thread
@Override
protected void onPause() {
super.onPause();
parallaxView.pause();
}
//If the Activity is resumed make sure to resume our thread
@Override
protected void onResume() {
super.onResume();
parallaxView.resume();
}
}
ArrayList<Background> backgrounds = new ArrayList<>();