我延长了DialogFragment
。它只有EditText
和接受和取消按钮。
在其中,文本输入EditText
;然后,单击“接受”后,将使用try/catch
检查文本。
在try
内,如果一切顺利,我会忽略对话;如果流进入catch
,则想法是保留对话框而不是忽略它,以便用户有机会更正文本。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
...
builder.setPositiveButton(android.R.string.ok, new OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
onAcceptDialog();
}
})
...
}
...
private void onAcceptDialog() {
try {
...
this.dismiss();
} catch (Exception e) {
...
//Dialog is still being dismissed here although it shouldn't
}
}
但是,虽然我没有在this.dismiss()
内拨打catch
,但对话仍然被驳回。
在onAcceptDialog()
内有没有办法取消解雇?
答案 0 :(得分:0)
我遇到同样的问题,制作一个自定义对话框来解决这个问题。
@Override
protected Dialog onCreateDialog(int id)
{
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Test");
alert.setIcon(R.drawable.logo1);
alert.setMessage("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam cursus.");
LinearLayout lila1= new LinearLayout(this);
LinearLayout linbuttons = new LinearLayout(this);
linbuttons.setOrientation(LinearLayout.HORIZONTAL);
Button btnPositive = new Button(this);
Button btnNegative = new Button(this);
btnPositive.setText("Send");
btnPositive.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// write your code for sending
onBackPressed();
}
});
btnNegative.setText("Cancel");
btnNegative.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
linbuttons.addView(btnPositive);
linbuttons.addView(btnNegative);
lila1.addView(linbuttons);
return alert.create();
}
}
对于reference.。希望这会对你有所帮助。