【问题标题】:Using Text Field makes the app crashes使用文本字段会使应用程序崩溃
【发布时间】:2015-07-08 05:39:30
【问题描述】:

所以我刚刚开始学习 Android Studio 和 LibGDX,所以我不确定如何在 Scene2d UI 中使用 TextField,或者我是否正确使用它。当我尝试在模拟器上运行下面的代码时,它会崩溃。

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.ui.Skin;
import com.badlogic.gdx.scenes.scene2d.ui.TextField;

public class MyGdxGame extends ApplicationAdapter {

    private SpriteBatch batch;
    private BitmapFont font;
    private int screenHeight, screenWidth;
    private Skin skin;
    private TextField username, password;

    @Override
    public void create () {
        batch = new SpriteBatch();
        font = new BitmapFont();
        font.setColor(Color.GRAY);
        font.getData().scale(3);

        screenHeight = Gdx.graphics.getHeight();
        screenWidth = Gdx.graphics.getWidth();

        skin = new Skin();
        username = new TextField("Username", skin);
        password = new TextField("Password", skin);
    }

    @Override
    public void dispose() {
        batch.dispose();
        font.dispose();
        skin.dispose();
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(0, 0, 1, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();

        font.draw(batch, "Username:", (screenWidth / 2) - (screenWidth / 3),
            (screenHeight / 2) + (screenHeight / 12));
        font.draw(batch, "Password:", (screenWidth/2)-(screenWidth/3),
            ((screenHeight/2)+(screenHeight/12))-100);
        username.draw(batch, 1);
        password.draw(batch, 1);

        batch.end();
    }

}

【问题讨论】:

    标签: android android-studio crash libgdx textfield


    【解决方案1】:

    是的,你的问题是你没有皮肤。

    skin = new Skin();
    username = new TextField("Username", skin);
    

    您确实创建了一个新皮肤,但它是空的。 TextField 在创建时正在寻找一个 TextFieldStyle,但是没有,所以你的应用会崩溃。

    Google 四处寻找如何创建非空皮肤,这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      相关资源
      最近更新 更多