studio programacion móviles modal libro dialogo desarrollo curso cerrar automaticamente aplicaciones java android dialog schedule

java - programacion - ¿Android cierra el diálogo después de 5 segundos?



manual de programacion android pdf (6)

Este es el código, consulte este link :

public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get button Button btnShow = (Button)findViewById(R.id.showdialog); btnShow.setOnClickListener(new View.OnClickListener() { //on click listener @Override public void onClick(View v) { AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); builder.setTitle("How to close alertdialog programmatically"); builder.setMessage("5 second dialog will close automatically"); builder.setCancelable(true); final AlertDialog closedialog= builder.create(); closedialog.show(); final Timer timer2 = new Timer(); timer2.schedule(new TimerTask() { public void run() { closedialog.dismiss(); timer2.cancel(); //this will cancel the timer of the system } }, 5000); // the timer will count 5 seconds.... } }); } }

¡CÓDIGO FELIZ!

Estoy trabajando en una aplicación de accesibilidad. Cuando el usuario desea abandonar la aplicación, le muestro un cuadro de diálogo en el que tiene que confirmar que desea hacerlo, si no confirma después de 5 segundos, el cuadro de diálogo debería cerrarse automáticamente (ya que el usuario probablemente lo abrió accidentalmente). Esto es similar a lo que ocurre en Windows cuando cambia la resolución de la pantalla (aparece una alerta y, si no la confirma, vuelve a la configuración anterior).

Así es como muestro el diálogo:

AlertDialog.Builder dialog = new AlertDialog.Builder(this).setTitle("Leaving launcher").setMessage("Are you sure you want to leave the launcher?"); dialog.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { exitLauncher(); } }); dialog.create().show();

¿Cómo puedo cerrar el diálogo 5 segundos después de mostrarlo?


Tarde, pero pensé que esto podría ser útil para cualquiera que use RxJava en su aplicación.

RxJava viene con un operador llamado .timer() que creará un Observable que se onNext() solo una vez después de un tiempo determinado y luego llamará onComplete() . Esto es muy útil y evita tener que crear un Handler o Runnable.

Puede encontrar más información sobre este operador en la documentación de ReativeX.

// Wait afterDelay milliseconds before triggering call Subscription subscription = Observable .timer(5000, TimeUnit.MILLISECONDS) // 5000ms = 5s .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<Long>() { @Override public void call(Long aLong) { // Remove your AlertDialog here } });

Puede cancelar el comportamiento desencadenado por el temporizador cancelando la suscripción del observable con un clic del botón. Por lo tanto, si el usuario cierra manualmente la alerta, llame a la subscription.unsubscribe() y tiene el efecto de cancelar el temporizador.


Utilice CountDownTimer para lograr.

final AlertDialog.Builder dialog = new AlertDialog.Builder(this) .setTitle("Leaving launcher").setMessage( "Are you sure you want to leave the launcher?"); dialog.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { exitLauncher(); } }); final AlertDialog alert = dialog.create(); alert.show(); new CountDownTimer(5000, 1000) { @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub } @Override public void onFinish() { // TODO Auto-generated method stub alert.dismiss(); } }.start();


AlertDialog automático con el tiempo restante mostrado en el texto del botón positivo a un AlertDialog .

AlertDialog dialog = new AlertDialog.Builder(getContext()) .setTitle(R.string.display_locked_title) .setMessage(R.string.display_locked_message) .setPositiveButton(R.string.button_dismiss, null) .create(); dialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { final Button positiveButton = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE); final CharSequence positiveButtonText = positiveButton.getText(); new CountDownTimer(AUTO_DISMISS_MILLIS, 100) { @Override public void onTick(long millisUntilFinished) { positiveButton.setText(String.format(Locale.getDefault(), "%s (%d)", positiveButtonText, TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) + 1)); } @Override public void onFinish() { dismiss(); } }.start(); } });


AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();

entonces llama a la meta de que funcione

alertDialog .dismiss();


final AlertDialog.Builder dialog = new AlertDialog.Builder(this).setTitle("Leaving launcher").setMessage("Are you sure you want to leave the launcher?"); dialog.setPositiveButton("Confirm", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int whichButton) { exitLauncher(); } }); final AlertDialog alert = dialog.create(); alert.show(); // Hide after some seconds final Handler handler = new Handler(); final Runnable runnable = new Runnable() { @Override public void run() { if (alert.isShowing()) { alert.dismiss(); } } }; alert.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { handler.removeCallbacks(runnable); } }); handler.postDelayed(runnable, 10000);