1

When clicking a Button to switch from the main Activity to my "ColoursGame" Activity the app crashes.

I'm still a beginner so not an expert at debugging.

The main activity code

Button colorsGame = (Button) findViewById(R.id.colours);
            colorsGame.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent(MainActivity.this, ColoursGame.class));
                }
            });

Manifest new activity

<activity android:name=".ColoursGame"
        android:label="ColourGame"
        android:theme="@style/AppTheme.NoActionBar"></activity>

ColoursGame Activity OnCreate code

public class ColoursGame extends Activity {

int livesCount = 3;
String x;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_colours_game);

    Button start = (Button) findViewById(R.id.startColors);
    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            vSwitch.showNext();
            x = String.valueOf(livesCount);
            lives.setText(x);
            text();
            textColor();
            backgroundColor();

            start();
        }
    });

}

The Error

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.aynaar.numbersgameforkids, PID: 3278
              java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.aynaar.numbersgameforkids/com.aynaar.numbersgameforkids.ColoursGame}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2548)
                  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 'android.view.View android.view.Window.findViewById(int)' on a null object reference
                  at android.app.Activity.findViewById(Activity.java:2323)
                  at com.aynaar.numbersgameforkids.ColoursGame.<init>(ColoursGame.java:42)
                  at java.lang.Class.newInstance(Native Method)
                  at android.app.Instrumentation.newActivity(Instrumentation.java:1078)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2538)
                  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) 
halfer
  • 19,824
  • 17
  • 99
  • 186

2 Answers2

1

at com.aynaar.numbersgameforkids.ColoursGame.<init>(ColoursGame.java:42)

Don't call findViewById outside of onCreate, there's no Window to call findViewById at that point.


If you still get a NullPointer, then you must have @+id/startColors in activity_colours_game.xml

Answer explanation here

Community
  • 1
  • 1
OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
0
Button start = (Button) findViewById(R.id.startColors);

According to the error you are trying to reach a button that doesnt exist in your activity layout file (whatever it is). Check the id of your button and make sure it is placed on the layout page that related with your "ColoursGame" Activity.

F K
  • 61
  • 9