0

我已经扩展了一个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()吗?

4

1 回答 1

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();      
} 
}

供您参考。. 希望这会帮助你。

于 2013-06-21T10:42:40.570 回答