【问题标题】:Cancel the dismiss of a DialogFragment after PositiveButton clicked单击 PositiveButton 后取消关闭 DialogFragment
【发布时间】:2013-06-21 10:34:08
【问题描述】:

我已经扩展了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
    }
}

但是,尽管我没有在 catch 内调用 this.dismiss(),但对话框仍然被关闭。

有没有办法在onAcceptDialog()内部取消解雇一次?

【问题讨论】:

    标签: android android-dialogfragment


    【解决方案1】:

    我遇到了同样的问题,制作一个自定义对话框来解决这个问题。

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

    【讨论】:

    • 我猜这将是唯一的选择,但我不想放弃“确定”和“取消”按钮的语义......无论如何,谢谢!
    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多