J'essaie de lancer une boîte de dialogue personnalisée à partir d'un appui sur un bouton dans une boîte de dialogue d'alerte. L'utilisateur appuie sur un bouton dans l'interface utilisateur principale qui ouvre le redeemAlertDialog, cette boîte de dialogue demande à l'utilisateur s'il est certain qu'il souhaite poursuivre cette action. Si elles cliquent sur "Oui", je veux ouvrir ma boîte de dialogue personnalisée. Cependant, le lancement de ma boîte de dialogue personnalisée provoque le blocage de l'application. Logcat me dit que j'ai une erreur de pointeur null sur la ligne * text.setText ("Blah Blah"/merchantName /); *, mais si je commente sur cette ligne, je reçois la même erreur sur la ligne button.setOnClickListener (new OnClickListener() { Si je commente ces deux lignes, alors ça marche.Après avoir creusé, je pense que mon problème est lié au contexte auquel j'associe mon dialogue personnalisé quand je le crée, mais je n'ai pas t été en mesure de le réparer. Si quelqu'un pouvait indiquer où je vais mal, je vous serais reconnaissant. mon code est ci-dessous.Lancer la boîte de dialogue personnalisée à partir de la boîte de dialogue Alerte - Erreur NullPointer
SOLVED Dans ma méthode onCreate a changé ma définition de mContext de m Contexte = getApplicationContext(); à mContext = this; Pour certaines raisons, couponDialog = new Dialog (mContext); n'a pas aimé ce qu'il était donné par getApplicationContect();
private void redeem() {
AlertDialog.Builder redeemAlerDialogBuilder = new AlertDialog.Builder(this);
redeemAlerDialogBuilder.setMessage("Are you sure you want to redeem?")
.setCancelable(false) //User must select a button, can't use the back button
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//Do something to launch a redeem dialog
//openCouponDialog();
couponDialog = new Dialog(mContext);
couponDialog.setContentView(R.layout.redeem_layout);
couponDialog.setTitle("Freebie Coupon");
couponDialog.setCancelable(false); //User should only be able to exit dialog by clicking done
TextView text = (TextView) findViewById(R.id.redeemMerchantName);
text.setText("Blah Blah"/*merchantName*/);
ImageView image = (ImageView) findViewById(R.id.couponImage);
//Set merchant coupon image here - need to download this from server when merchant is first added
Button button = (Button) findViewById(R.id.redeemDialogCloseButton);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
couponDialog.show();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel(); //Cancel redeem
}
});
redeemAlertDialog = redeemAlerDialogBuilder.create();
redeemAlertDialog.show();
}
findViewById (...) retour null qui est à l'origine NullPointerException. pouvez-vous poster plus de code d'où vous appelez cette boîte de dialogue? – kosa
J'appelle couponDialog de redeemAlertDialog. Vous pouvez voir couponDialog.show() à la fin de redeemAlertDialog.setPositiveButton – Roardog