我正在使用一个具有对话框主题的活动,在该活动中我没有放置正面或负面按钮。通过接收外部通知(Firebase)启动此活动。当我要关闭该对话框时,需要在对话框外轻按两下才能将其关闭。确实:
我该怎么做才能避免轻按两次,而只需轻按一下即可取消对话框活动?创建对话框活动时,是否有办法避免覆盖我的GUI的阴影?
我认为我的问题与这里的问题不同:AlertDialog does not dismiss, takes twice tap to close。在后一篇文章中,需要指出的是,方法setPositiveButton()和setNegativeButton()对对话框的解雇有一个隐式调用,这不是我要解决的问题。我只是收到一个通知,此通知变成一个带有对话框主题的活动,要关闭它,我需要轻按两次,而我只想轻按一次即可关闭。这是我的活动:
public class NotificationDialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
showDialog(this, intent);
}
private void showDialog(Context context, @NonNull Intent intent) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(intent.getStringExtra("title"));
builder.setMessage(intent.getStringExtra("text"));
builder.create().show();
}
}
答案 0 :(得分:1)
我认为问题可能在于您正在启动活动,然后从该活动中启动对话框。 (?)您可能想要添加OnCancelListener
并在那里完成活动。 (?)
private void showDialog(Context context, @NonNull Intent intent) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(intent.getStringExtra("title"));
builder.setMessage(intent.getStringExtra("text"));
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
NotificationDialogActivity.this.finish();
}
});
builder.show();
}
或者,除非由于其他原因需要此活动,否则您可以完全摆脱它,只需将showDialog
代码移至调用活动,然后执行此操作即可。
答案 1 :(得分:0)
请查看此答案。您可以解决您的问题!
答案 2 :(得分:0)
builder.setCancelable(true);
//Use above line to dismiss a dialog of "AlertDialog.Builder"
//if you touch outside...
// It Works..
//If you use "AlertDialog" then use below line
//to dissmiss on touching the outside...
builder.setCanceledOnTouchOutside(true);