Android Toast Mensajes no funcionan
Estoy desarrollando un juego a través de Andengine para Android. Tengo MainActivity clase y GameScene clase. Utilizo los mensajes Toast en GameActivity. Y está funcionando.
Toast.makeText(this, " Hello World", Toast.LENGTH_SHORT).show();
Así que quiero usar los mensajes Toast en la clase GameScene. Pero no funciona. Aquí está el código:
- XML vinculante herramientas para Android
- Selector de imágenes de preferencias de Android: cómo recibir resultados en DialogPreference
- Java: escala Mapsforge Map al usar mosaicos de mapa de bits en línea en lugar del renderizador sin conexión
- Necesita una solución de trabajo para usar la pantalla de bloqueo de patrón Android en la aplicación personalizada (y no redireccionamientos de código fuente)
- Cómo comprobar qué sim se establece como predeterminado en android programatically
Toast.makeText(activity, " Hello World", Toast.LENGTH_SHORT).show();
Tengo que usar "actividad" en lugar de "esto". Pero no funciona
¿por qué?
EDITADO:
Cuando uso el segundo, se produce un error. LogCat: http://s29.postimg.org/k8faj9mdj/Capture.png
- Java (Eclipse) - Recopilación condicional
- Error: Error de ejecución para la tarea ': app: mergeDebugResources'
- Cómo sincronizar datos entre dispositivos en Wi-Fi
- Configurar Alpha / Opacidad de Diseño
- Android ScrollView no se inicia en la parte superior, pero al principio del GridView
- Cómo portar la aplicación de Android a la plataforma iOS?
- Android: ¿Hay una ventaja al establecer compileSdkVersion en una versión inferior a la última API?
- Mobile Vision barcodeScanner: ¿Por qué SurfaceView no actualiza CameraSource?
Está intentando mostrar un Toast
en un subproceso de fondo. Debe realizar todas las operaciones de la interfaz de usuario en el subproceso principal de la interfaz de usuario.
La excepción RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
puede ser un poco críptico para los principiantes, pero esencialmente le dice que usted está en un hilo equivocado.
Para resolverlo, envuelva el brindis por ejemplo runOnUiThread()
:
activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(...).show(); } });
Podría haber dos razones para que su código no funcione. Es éter su parámetro de actividad es nulo o …
Poco tiempo después de mostrar la tostada de la actividad es morir, en ese caso, se matará el brindis, así, para evitar esto se puede llamar a activity.getApplicationContext()
como en @ Mehmet respuesta Seçkin.
Utilice uno de los siguientes
Toast.makeText(getApplicationContext(), " Hello World", Toast.LENGTH_SHORT).show(); Toast.makeText(getBaseContext(),"please Create your Account First", Toast.LENGTH_SHORT).show(); Toast.makeText(GameActivity.this,"please Create your Account First", Toast.LENGTH_SHORT).show();
Utilizar:
Toast.makeText(getApplicationContext(), " Hello World", Toast.LENGTH_SHORT).show();
o
Toast.makeText(activity.this, " Hello World", Toast.LENGTH_SHORT).show();
Toast.makeText(getApplicationContext(), "text", Toast.LENGTH_SHORT).show();
prueba esto.
Desde que usted preguntó por qué; Pienso que usted está dando una referencia de la actividad como contexto al mensaje de la tostada, esto es porqué no está trabajando.
Si está intentando mostrar un mensaje Toast desde fuera de una actividad, puede probar:
Toast.makeText(activity.getApplicationContext(), " Hello World", Toast.LENGTH_SHORT).show();
O de la GameActivity
Toast.makeText(GameActivity.this, " Hello World", Toast.LENGTH_SHORT).show();
O desde la MainActivity
Toast.makeText(MainActivity.this, " Hello World", Toast.LENGTH_SHORT).show();
Ya que lo estás llamando de la clase. Necesitas obtener el contexto de la actividad a través del constructor de la clase o bien necesitas usar GetApplicationcontext ().
- Por qué y cuándo anular el registro de observadores de contenido en android
- ¿Cómo mantener el estado de barra de progreso al usar volley?