0
\$\begingroup\$

I get a strange Nullpointer exception and I don't understand why. Can someone help me ?

Exception:

Exception in thread "LWJGL Application" java.lang.NullPointerException
    at com.badlogic.gdx.scenes.scene2d.ui.ScrollPane.draw(ScrollPane.java:583)
    at com.badlogic.gdx.scenes.scene2d.Group.drawChildren(Group.java:123)
    at com.badlogic.gdx.scenes.scene2d.Group.draw(Group.java:57)
    at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.draw(WidgetGroup.java:163)
    at com.badlogic.gdx.scenes.scene2d.ui.Table.draw(Table.java:119)
    at com.solvapps.tests.NewStoryBook.draw(NewStoryBook.java:40)

My Code ACTOR:

public class NewStoryBook extends Actor {

    Table table;
    ScrollPane pane;
    Table tableScroller;

    public NewStoryBook(Skin skin) {

        int w = Gdx.graphics.getWidth();
        int h = Gdx.graphics.getHeight();
        table = new Table();
        table.setPosition(400, 400);
        table.setSize(w / 3, h * 0.8f);
        tableScroller = new Table();
        tableScroller.add(new Label("bla bla",skin));
        pane = new ScrollPane(tableScroller);

        table.add(pane);

    }

    @Override
    public void draw(Batch batch, float parentAlpha) {
        super.draw(batch, parentAlpha);
        table.draw(batch, parentAlpha);
    }

My Code App:

public class StoryBoxTest4 extends ApplicationAdapter {

    private Stage stage;
    NewStoryBook newstoryBook;

    public void create() {
        stage = new Stage(new ScreenViewport());
        Skin skin = new Skin(Gdx.files.internal(SkinManager.getSkin()));
        newstoryBook = new NewStoryBook(skin);
        stage.addActor(newstoryBook);
        Gdx.input.setInputProcessor(stage);
    }
\$\endgroup\$

1 Answer 1

0
\$\begingroup\$

This line is the line that throws a NullPointerException:

getStage().calculateScissors(widgetAreaBounds, scissorBounds);

From this we can deduce that getStage() is returning null. Why? Because you haven't added your table to a Stage. Instead you draw it manually in your NewStoryBook actor which is something you shouldn't do.

Solution? Make NewStoryBook extend Group instead and use addActor:

public class NewStoryBook extends Group {
    ...

    public NewStoryBook(Skin skin) {
        ...
        addActor(table);
    }

    // Remove draw() function
}
\$\endgroup\$
1
  • \$\begingroup\$ Thank you so much. You did not only answered my question, you solved my general design problem. \$\endgroup\$ Nov 16, 2018 at 16:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .