Java 尝试对空对象引用调用虚方法(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

有人能帮忙吗?我一直试图在AndroidStudio中运行视差图像视图,但不断收到一条异常消息,表示“试图在空对象引用上调用虚拟方法”。它甚至澄清了这是一个NullPointerException。以蓝色突出显示的消息似乎已出现

这在第行:

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();

initializeby
ArrayList 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<>();