Я пытаюсь запустить собственное диалоговое окно от нажатия кнопки в диалоге оповещения.Пользователь нажимает кнопку в главном пользовательском интерфейсе, которая открывает redeemAlertDialog, этот диалог спрашивает пользователя, уверены ли они, что хотят продолжить это действие.Если они нажимают «Да», то я хочу открыть свой пользовательский диалог.Тем не менее, запуск моего собственного диалогового окна вызывает сбой приложения.Logcat говорит мне, что у меня ошибка нулевого указателя на строке * text.setText ("Blah Blah" / merchantName /); *, но если я закомментирую эту строку, я получу ту же ошибку в строке button.setOnClickListener (new OnClickListener () { Если я закомментирую обе эти строки, то это сработает. После копания я думаю, что моя проблема связана с контекстом, с которым я связываю свой пользовательский диалог, когда яЯ создаю это, но я не смог исправить это. Если кто-то мог указать, где я иду не так, я был бы признателен. Мой код ниже.
решено В моемМетод onCreate изменил мое определение mContext с mContext = getApplicationContext (); на mContext = this; по некоторым причинам couponDialog = new Dialog (mContext); ему не понравилось то, что было задано 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();
}