Search code examples
javaandroidclassnullpointerexceptionsetcontentview

setContentView throws NullPointerException


I have an MainActivity and an extended DsiplayClass. Out of this DisplayClass I wanted to change the ContentView via setContentView, but all I got is an NullPointerException.

Please help me and tell me why.

MainActivity:

public class Main extends Activity {

    DisplayClass display;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        display = new DisplayClass();

        display.showMain();
    }

}

DisplayClass:

public class DisplayClass extends Main {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void DisplayClass() {

    }

    public void showMain() {
        setContentView(R.layout.mainmenu);
    }

}

NullPointerException is caused in the line where I set the "setContentView(R.layout.mainmenu);" and in this line "display.showMain();".

Please help me.


Solution

  • What exactly are you trying to do here? You should put your setContentView(R.layout.mainmenu); in your Main class' onCreate() method. Delete DisplayClass completely.

    The reason why you are getting a null pointer is because that Activity, (DisplayClass), hasn't actually been "started."

    public class DisplayClass {
        public static showMain(Activity main) {
            main.setContentView(R.id.layoutmain);
        }
    }
    

    And then inside the onCreate method in your Main Activity...

    DisplayClass.showMain(this);