单击PositiveButton后取消关闭DialogFragment

时间:2013-06-21 10:34:08

标签: android android-dialogfragment

我延长了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()内有没有办法取消解雇?

1 个答案:

答案 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.。希望这会对你有所帮助。