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.

  • ¿Cómo cancelar un diálogo temático como Actividad cuando se toca fuera de la ventana?
  • SetTitle to AppCompatDialog no funciona
  • Evitar que ProgressDialog sea rechazado cuando hago clic en el botón de búsqueda (Android)
  • Selector de archivos múltiples / selector de diálogo de Android
  • ¿Cómo puedo mostrar mi actividad como un diálogo en Android?
  • GetContentResolver () y getWindow () en un DialogFragment
  • Uso de Diálogos vs Actividades
  • ¿Qué significa 'indeterminado' en ProgressDialog?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.