Visibilidad de un botón en el temporizador
Tengo una aplicación que muestra un descargo de responsabilidad al principio del programa. Quiero que un botón permanezca invisible durante un período de tiempo determinado y luego se vuelva visible. Configurar un hilo que duerme durante 5 segundos, y luego intenta hacer el botón visible. Sin embargo, obtengo este error cuando ejecuto mi código:
08-02 21: 34: 07.868: ERROR / AndroidRuntime (1401): android.view.ViewRoot $ CalledFromWrongThreadException: Sólo el subproceso original que creó una jerarquía de vistas puede tocar sus vistas.
- Obtener la vista de raíz de la actividad actual
- Android ¿Cómo agregar la vista en el comienzo del diseño?
- Android ver el relleno o los márgenes por defecto
- GetLocationOnScreen () devuelve valores inesperados
- Android: dibujar ImageView exactamente sobre la vista existente en una capa más profunda
¿Cómo puedo contar 5 segundos, y luego hacer el botón visible? Gracias.
Thread splashTread = new Thread() { @Override public void run() { try { int waited = 0; while(_active && (!_ok2)) { sleep(100); if(_active) { waited += 100; if(waited >= _splashTime) { turnButtonOn(); } } } } catch(InterruptedException e) { // do nothing } finally { finish(); startActivity(new Intent("com.lba.mixer.Choose")); } }; splashTread.start(); public static void turnButtonOn() { okButton.setVisibility(View.VISIBLE); }
- Cómo crear una vista parcialmente invisible
- ¿Cómo agregar una foto de contacto a ImageView?
- Cómo manejar los cambios de visibilidad para una vista / widget personalizado de Android
- Android slide down animación
- Android - cómo quitar la vista en disposición (la visión agregó dinámicamente)
- android- puede hacer que un objeto dibujado en un lienzo haga clic
- Cómo comprobar si la vista es visible para el usuario
- Cómo obtener la vista anterior o siguiente
El problema es que no estás en el subproceso de interfaz de usuario al llamar a okButton.setVisibility(View.VISIBLE);
, Ya que crear y ejecutar su propio hilo. Lo que tiene que hacer es obtener el controlador de su botón y establecer la visibilidad a través del hilo de interfaz de usuario que recibe a través del controlador.
Así que en lugar de
okButton.setVisibility(View.VISIBLE)
deberías hacer
okButton.getHandler().post(new Runnable() { public void run() { okButton.setVisibility(View.VISIBLE); } });
He encontrado esto para ser una solución mucho más simple. Visibilidad en retraso de 7 segundos
continuebutton.setVisibility(View.INVISIBLE); continuebutton.postDelayed(new Runnable() { public void run() { continuebutton.setVisibility(View.VISIBLE); } }, 7000);
- ¿Cuál es la mejor manera de comprobar si una cadena contiene una URL en Java / Android?
- La API de Google Places siempre devuelve el error