触摸在外面时,AlertDialog消失[Android]

时间:2017-02-15 16:08:22

标签: java android alertdialog

我在我的应用程序上使用警报对话框,但是当用户触摸它时它会一直隐藏。 这是我的代码:

public class DialogMessageEnd extends DialogFragment
{
    String winner;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        Snooker_Scoreboard ss = new Snooker_Scoreboard();
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setCancelable(false);
        builder.setMessage(ss.winnerPlayer + " won the match ("+ss.frame1ToPass+"-"+ss.frame2ToPass+")!")
                .setPositiveButton("New Match!", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Intent i = new Intent(getContext(),PlayerSelection.class);
                        startActivity(i);
                    }
                });



        // Create the AlertDialog object and return it
        return builder.create();
    }

}

如您所见,我使用了

builder.setCancelable(false);

但它仍然没有解决这个问题。 你能帮助我吗?感谢

3 个答案:

答案 0 :(得分:14)

使用 setCanceledOnTouchOutside(false)来防止在警报对话框外触摸时解除。

setCancelable(false)用于防止按下后退按钮时解除。

age

答案 1 :(得分:5)

添加

AlertDialog alertDialog = builder.show();

alertDialog.setCanceledOnTouchOutside(false);

代码

答案 2 :(得分:2)

您可以覆盖对话的默认功能,并确保没有任何反应。应该工作正常。

@Override
public boolean onTouchEvent(MotionEvent event) {
    // If we've received a touch notification that the user has touched
    // outside the app, finish the activity.
    if (MotionEvent.ACTION_OUTSIDE == event.getAction()) {
      //DO SOMETHING... OR NOTHING?
      return true;
}

或者为了更好的练习:

builder.setCanceledOnTouchOutside(false)