有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

来自Java类的安卓 Toast消息

我正在开发一个card game。在名为“Mesa”的游戏的main class中,它触发了游戏的主循环,我想展示一些消息,看看它是否有效,下一步我想做的是为这个游戏构建用户界面。 我想显示的所有信息都记录在日志中。d(…,…)而且效果很好。我的问题是,当试图Toast这些消息时,屏幕似乎变黑了。 以下是我的class信息Toast

public class ToastMsg
{

    Context ctx;

    public ToastMsg (Context context)
    {
        this.ctx = context;
    }

    public void makeText(final String text)
    {
           Handler handler = new Handler();        
            handler.post(new Runnable() {
                public void run() {
                    Toast toast = Toast.makeText(ctx, text, Toast.LENGTH_SHORT);
                    toast.show();
                }
            });
    }
}

这是我在Principal.class中创建新“Mesa”的onCreate方法

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    mesa = new Mesa(Principal.this, 3, 1, 3);
    mesa.añadirJugador(new JugadorBot("Jose"));
    mesa.añadirJugador(new JugadorBot("Hasan"));
    mesa.añadirJugador(new JugadorBot("Abdul"));

    runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            try {
                mesa.empezarPartida();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                Log.d("ERROR", e.getMessage());
            }
        }
    });

}

在logCat中,我得到一个错误:

06-21 11:55:05.558: W/ActivityManager(1273): Launch timeout has expired, giving up wake lock!
06-21 11:55:05.848: E/WindowManager(1273): Starting window AppWindowToken{b3307548 token=Token{b333f7a8 ActivityRecord{b3398748 u0 com.games.sardineta/.Principal t3}}} timed out

编辑:

下面是使用Toastmessage方法的示例:(这是一个表示组的类的方法)

public void repartir (int cartas, Jugada jugada)
{
    /* Métedo que recibe el número de cartas a repartir
     *  y los jugadores. Reparte cartas a los jugadores
     *  uno a uno.
     */
    ArrayList<Jugador> jugadores = jugada.mesa.jugadores;
    for (int i=1; i<=cartas; i++)
    {
        for (Jugador jugador : jugadores)
        {
            try
            {
                Carta carta = baraja.get(0);
                jugador.getMano().add(carta);
                baraja.remove(0);
                Log.d("DEBUG", jugador.getNombre() + " recibe " + carta.toString());
                jugada.mesa.toast.makeText(jugador.getNombre() + " recibe " + carta.toString());
                sleep(1000);
            }
            catch (NullPointerException npe)
            {
                throw new Error ("Baraja vacía.");
            }

        }
    }
}

编辑2:

public class Mesa {

Principal ctx;
public ToastMsg toast;
......
public Mesa (Context ctx, int numeroJugadores, int numBarajas, int numCartasRepartir)
{
    if (numeroJugadores < 2 || numeroJugadores > NUMERO_MAX_DE_JUGADORES)
        throw new Error ("Número de jugadores no válido.");
    this.ctx = (Principal) ctx;
    toast = new ToastMsg(ctx.getApplicationContext());
     ....
 }}

有什么想法吗? 请帮忙


共 (0) 个答案