Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.