Cómo iniciar una actividad desde un diálogo en Android

Creé un diálogo personalizado y me gustaría iniciar una nueva actividad cuando se hace clic en Aceptar. ¿Cómo puedo obtener el contexto para establecerlo como primer argumento de mi constructor Intent?

Puedo crear la intención usando getContext() , pero no puedo llamar a startActivity . ¿Debo pasar la actividad que llama al diálogo al constructor del diálogo? ¿Es la forma habitual de iniciar una actividad haciendo clic en un diálogo?

 public class CustomDialog extends Dialog implements OnClickListener { Button okButton, cancelButton; public CustomDialog(Context context) { super(context); setContentView(R.layout.custom_dialog); okButton = (Button) findViewById(R.id.button_ok); okButton.setOnClickListener(this); cancelButton = (Button) findViewById(R.id.button_cancel); cancelButton.setOnClickListener(this); } @Override public void onClick(View v) { if (v == cancelButton) dismiss(); else { Intent i = new Intent(getContext(), ItemSelection.class); startActivity(i); //The method startActivity(Intent) is undefined for the type CustomDialog } } } 

6 Solutions collect form web for “Cómo iniciar una actividad desde un diálogo en Android”

 public class CustomDialog extends Dialog implements OnClickListener { Button okButton, cancelButton; Activity mActivity; public CustomDialog(Activity activity) { super(activity); mActivity = activity; setContentView(R.layout.custom_dialog); okButton = (Button) findViewById(R.id.button_ok); okButton.setOnClickListener(this); cancelButton = (Button) findViewById(R.id.button_cancel); cancelButton.setOnClickListener(this); } @Override public void onClick(View v) { if (v == cancelButton) dismiss(); else { Intent i = new Intent(mActivity, ItemSelection.class); mActivity.startActivity(i); } } } 

@ Dhaag23 ¡Ni siquiera tienes que hacer mucho trabajo!

Llame a getContext ()

Esto devuelve el Context pasado al constructor del Diálogo.

 Intent i = new Intent(getBaseContext(), ItemSelection.class); 

Esto funcionó para mí, aunque la estructura es diferente, no hay clase para el diálogo.

Simple, simplemente guarde el contexto que se pasa al constructor CustomDialog en una variable local.

Como Cheezmeister escribió, no es necesario obtener la Ley. Simplemente puede utilizar el contexto como este:

 Intent i = new Intent(getContext(), ItemSelection.class); getContext().startActivity(i); 

Le sugiero que use esto. Lo hace tan simple:

 AlertDialog.Builder dialog = new AlertDialog.Builder(RegistrationActivity.this); dialog.setCancelable(false); dialog.setTitle("Error Alert"); dialog.setMessage(info[1]); dialog.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { Intent intent = new Intent(RegistrationActivity.this, RegistrationActivity.class); startActivity(intent); } }) .setNegativeButton("", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); final AlertDialog alert = dialog.create(); alert.show(); 

info[1] es mis datos que se muestra. Usted puede substituir esto con su propio mensaje.

  • Uso del diálogo de progreso con el hilo
  • Crear cuadro de diálogo con barra de progreso en android
  • Cómo evitar que un cuadro de diálogo se cierre cuando se hace clic en un botón
  • Finalizar la actividad en la clase de diálogo
  • Definición de la actividad de android como diálogo con tema de luz
  • Android: App Compat Theme - Diálogo cuando grande
  • ¿Cómo puedo mostrar mi actividad como un diálogo en Android?
  • Uso de DatePicker sin selector de día
  • No se puede agregar ventana - token android.os.BinderProxy@42824 no es válido; ¿Está funcionando su actividad?
  • Android: cómo crear una actividad transparente con temas de diálogo
  • Android - MediaController de VideoView dentro de diálogo aparece detrás del diálogo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.