Comment faire pour démarrer une activité à partir d'une boîte de dialogue dans Android
J'ai créé un dialogue personnalisé et j'aimerais commencer une nouvelle activité lorsque vous cliquez sur OK. Comment puis-je obtenir le contexte de la définir comme premier argument de mon Intention constructeur?
Je peux créer de l'intention à l'aide de getContext()
, mais je ne peux pas appeler startActivity
. Dois-je passer à l'activité de l'appel de la boîte de dialogue la boîte de dialogue du constructeur? C'est la façon habituelle de démarrer une activité en cliquant sur une boîte de dialogue?
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
}
}
}
OriginalL'auteur jul | 2011-02-21
Vous devez vous connecter pour publier un commentaire.
J'ai fait la correction. Vous pouvez soit le faire de cette façon, ou de faire la déclaration de la classe de boîte de Dialogue à l'intérieur de votre activité qui permettra d'accéder directement à la
Activity
'méthodeOriginalL'auteur EricLarch
Cela a fonctionné pour moi même si la structure est différente, il n'y a pas de classe de la boîte de dialogue.
OriginalL'auteur lorless
@dhaag23 Vous n'avez même pas à faire beaucoup de travail!
Appel getContext()
Renvoie le
Context
transmis à la boîte de Dialogue du constructeur.OriginalL'auteur Cheezmeister
Simple, il suffit de sauvegarder le contexte qui est passée dans le CustomDialog constructeur dans une variable locale.
OriginalL'auteur dhaag23
Comme Cheezmeister a écrit il n'est pas nessesary pour obtenir le Actvitiy. Vous pouvez simplement utiliser le cadre comme ceci:
OriginalL'auteur rekire