When I run the app on my desktop emulator it works fine, but if I turn on my mobile device it crashes when I press the play button on the Main Menu. On the desktop device it changes to the Play Screen as it should be.
I know that it's null somewhere but I can't find it. If I remove
hud = new Hud(game.batch);
It's black screen on my desktop emulator also.
The playscreen class:
public class PlayScreen implements Screen {
private RunningGame game;
private TextureAtlas atlas;
private OrthographicCamera gamecam;
private Viewport gamePort;
private Hud hud;
private TmxMapLoader maploader;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
private World world;
private Box2DDebugRenderer b2dr;
private Runner player;
private float dt;
private boolean keyPressed = false;
private Button speedButton;
public PlayScreen(RunningGame game){
    atlas = new TextureAtlas("Runner_And_Enemies.pack");
    this.game = game;
    gamecam = new OrthographicCamera();
    gamePort = new FitViewport(RunningGame.V_WIDTH / RunningGame.PPM, RunningGame.V_HEIGHT / RunningGame.PPM, gamecam);
    hud = new Hud(game.batch);
    maploader = new TmxMapLoader();
    map = maploader.load("level1.tmx");
    renderer = new OrthogonalTiledMapRenderer(map, 1 / RunningGame.PPM);
    gamecam.position.set(gamePort.getWorldWidth() / 2, gamePort.getWorldHeight() / 2 ,0);
    world = new World(new Vector2(0, -10), true);
    b2dr = new Box2DDebugRenderer();
    new B2WorldCreator(world, map);
    player = new Runner(world, this);
}
public TextureAtlas getAtlas(){
    return atlas;
}
@Override
public void show() {
}
public void handleInput(float dt){
   if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
      if (!keyPressed) {
          keyPressed = true;
           if (player.b2body.getLinearVelocity().x <= 4) {
              player.b2body.applyLinearImpulse(new Vector2(0.3f, 0), player.b2body.getWorldCenter(), true);
         }
            Hud.addscore(1);
        }
    } else {
        keyPressed = false;
   }
    if (Gdx.input.isKeyPressed(Input.Keys.UP))
            player.b2body.applyLinearImpulse(new Vector2(0, 0.4f), player.b2body.getWorldCenter(), true);
    if (Gdx.input.isKeyPressed(Input.Keys.LEFT) && player.b2body.getLinearVelocity().x >= -2)
            player.b2body.applyLinearImpulse(new Vector2(-5.2f, 0), player.b2body.getWorldCenter(), true);
}
public void update(float dt){
    handleInput(dt);
    world.step(1 / 60f, 6, 2);
    player.update(dt);
    gamecam.position.x = player.b2body.getPosition().x;
    gamecam.update();
    renderer.setView(gamecam);
}
@Override
public void render(float delta) {
    update(delta);
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    renderer.render();
    b2dr.render(world, gamecam.combined);
    game.batch.setProjectionMatrix(gamecam.combined);
    game.batch.begin();
    player.draw(game.batch);
    game.batch.end();
    game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
    hud.stage.draw();
}
@Override
public void resize(int width, int height) {
    gamePort.update(width, height);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
    map.dispose();
    renderer.dispose();
    world.dispose();
    b2dr.dispose();
    hud.dispose();
}
}
Running Game Class:
import com.badlogic.gdx.Game;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.mygdx.game.Screens.PlayScreen;
import com.mygdx.game.Screens.SplashScreen;
import aurelienribon.tweenengine.TweenManager;
public class RunningGame extends Game {
    public static final int V_WIDTH = 400;
    public static final int V_HEIGHT = 208;
    public static final float PPM = 100;
    public static final String TITLE = "Running Game", VERSION = "0.0.0.0.reallyEarly";
    public SpriteBatch batch;
    private TweenManager tweenManager;
    @Override
    public void create () {
        batch = new SpriteBatch();
        tweenManager = new TweenManager();
        setScreen(new SplashScreen(this));
        }
    @Override
    public void dispose() {
        super.dispose();
    }
    @Override
    public void render() {
        super.render();
    }
    @Override
    public void resize(int width, int height) {
    }
    @Override
    public void pause(){
    }
    @Override
    public void resume(){
    }
}
Error log:
 FATAL EXCEPTION: GLThread 26852
                                                                    Process: com.mygdx.game, PID: 17739
                                                                    java.lang.NullPointerException: Attempt to read from field 'com.badlogic.gdx.graphics.g2d.SpriteBatch com.mygdx.game.RunningGame.batch' on a null object reference
                                                                        at com.mygdx.game.Screens.PlayScreen.<init>(PlayScreen.java:55)
                                                                        at com.mygdx.game.Screens.MainMenu$1$1.run(MainMenu.java:86)
                                                                        at com.badlogic.gdx.scenes.scene2d.actions.RunnableAction.run(RunnableAction.java:42)
                                                                        at com.badlogic.gdx.scenes.scene2d.actions.RunnableAction.act(RunnableAction.java:32)
                                                                        at com.badlogic.gdx.scenes.scene2d.actions.SequenceAction.act(SequenceAction.java:65)
                                                                        at com.badlogic.gdx.scenes.scene2d.Actor.act(Actor.java:95)
                                                                        at com.badlogic.gdx.scenes.scene2d.Group.act(Group.java:46)
                                                                        at com.badlogic.gdx.scenes.scene2d.Stage.act(Stage.java:222)
                                                                        at com.mygdx.game.Screens.MainMenu.render(MainMenu.java:47)
                                                                        at com.badlogic.gdx.Game.render(Game.java:46)
                                                                        at com.mygdx.game.RunningGame.render(RunningGame.java:36)
                                                                        at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:472)
                                                                        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1561)
                                                                        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1278)
    02-22 18:36:51.388 17739-17739/com.mygdx.game E/AndroidGraphics: waiting for pause synchronization took too long; assuming deadlock and killing
    02-22 18:36:51.388 17739-17739/com.mygdx.game I/Process: Sending signal. PID: 17739 SIG: 9
