来自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) 个答案