我在我的应用程序上使用警报对话框,但是当用户触摸它时它会一直隐藏。 这是我的代码:
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);
但它仍然没有解决这个问题。 你能帮助我吗?感谢
答案 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)