无法在自定义 AlertDialog.Builder 上调用 dismiss()
can't call dismiss() on a custom AlertDialog.Builder
我创建了这个自定义AlertDialog.Builder
问题是我想在 mPositiveBTN
的 onClick
中关闭它
dismiss()
和 cancel()
未定义!怎么做?
就是这样:
public class SendSmsDialog extends AlertDialog.Builder {
private TextView mMessageTV;
private Button mPositiveBTN;
private EditText mobileNumberET;
private Context mContext;
public SendSmsDialog(@NonNull Context context, String title, String message) {
super(context);
mContext = context;
LayoutInflater inflater = ((MainActivity)context).getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.send_sms_dialog, null);
this.setView(dialoglayout);
bindViews(dialoglayout);
setListeners();
this.setTitle(title);
mMessageTV.setText(message);
}
private void setListeners() {
mPositiveBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mobileNumberET.setEnabled(true);
mobileNumberET.requestFocus();
if (UtilitiesMethods.checkEnteredPhone(mobileNumberET.getText().toString())) {
((MainActivity)mContext).doSendSMS(mobileNumberET.getText().toString());
} else {
SendSmsDialog.this.dismiss(); //not defined
mobileNumberET.setError("Please enter a correct mobile number");
}
}
});
}
private void bindViews(View dialoglayout) {
mMessageTV = (TextView) dialoglayout.findViewById(R.id.msg_tv);
mPositiveBTN = (Button) dialoglayout.findViewById(R.id.proceed_btn);
mobileNumberET = (EditText) dialoglayout.findViewById(R.id.mobile_num);
}
}
构建器本身不是对话框,这意味着您不能对构建器调用 dismiss。
您可能应该扩展 AlertDialog 而不是 AlertDialog.Builder。
我总是这样使用 AlertDialog.Builder:
private AlertDialog.Builder builder;
private AlertDialog dialog;
.
.
.
.
builder = new AlertDialog.Builder(this);
builder.setTitle("Add your account");
builder.setView(rootView);
为了显示我使用的对话框:
dialog = builder.show();
显示方法 return a AlertDialog.so 我可以通过以下方式关闭它:
dialog.dismiss();
我创建了这个自定义AlertDialog.Builder
问题是我想在 mPositiveBTN
onClick
中关闭它
dismiss()
和 cancel()
未定义!怎么做?
就是这样:
public class SendSmsDialog extends AlertDialog.Builder {
private TextView mMessageTV;
private Button mPositiveBTN;
private EditText mobileNumberET;
private Context mContext;
public SendSmsDialog(@NonNull Context context, String title, String message) {
super(context);
mContext = context;
LayoutInflater inflater = ((MainActivity)context).getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.send_sms_dialog, null);
this.setView(dialoglayout);
bindViews(dialoglayout);
setListeners();
this.setTitle(title);
mMessageTV.setText(message);
}
private void setListeners() {
mPositiveBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mobileNumberET.setEnabled(true);
mobileNumberET.requestFocus();
if (UtilitiesMethods.checkEnteredPhone(mobileNumberET.getText().toString())) {
((MainActivity)mContext).doSendSMS(mobileNumberET.getText().toString());
} else {
SendSmsDialog.this.dismiss(); //not defined
mobileNumberET.setError("Please enter a correct mobile number");
}
}
});
}
private void bindViews(View dialoglayout) {
mMessageTV = (TextView) dialoglayout.findViewById(R.id.msg_tv);
mPositiveBTN = (Button) dialoglayout.findViewById(R.id.proceed_btn);
mobileNumberET = (EditText) dialoglayout.findViewById(R.id.mobile_num);
}
}
构建器本身不是对话框,这意味着您不能对构建器调用 dismiss。
您可能应该扩展 AlertDialog 而不是 AlertDialog.Builder。
我总是这样使用 AlertDialog.Builder:
private AlertDialog.Builder builder;
private AlertDialog dialog;
.
.
.
.
builder = new AlertDialog.Builder(this);
builder.setTitle("Add your account");
builder.setView(rootView);
为了显示我使用的对话框:
dialog = builder.show();
显示方法 return a AlertDialog.so 我可以通过以下方式关闭它:
dialog.dismiss();