当前位置: 首页 > 面试题库 >

当触摸不在[Android]时,AlertDialog消失

江宏深
2023-03-14
问题内容

我在应用程序上使用了“警报对话框”,但是当用户在应用程序外部触摸时,该对话框一直隐藏。这是我的代码:

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);

但是它仍然不能解决问题。你能帮助我吗?谢谢


问题答案:

使用 setCanceledOnTouchOutside(false) 可以防止在触摸警报对话框外部时被关闭。

setCancelable(false) 用于防止按下返回按钮时被关闭。

    @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
    Dialog dialog = builder.create();
    dialog.setCanceledOnTouchOutside(false);         
    return dialog;
}


 类似资料:
  • 当用户关注输入字段时,我需要禁用软键盘。我在Android系统中使用的是爱奥尼亚4和科尔多瓦8。 我必须这么做,因为该应用程序将在带有物理键盘的设备上使用,因此我想使用这个物理键盘 我该怎么办? 谢啦

  • 启用触摸保护 把 Yubikey-manager 安装在一个绝对路径:【译者注:homebrew 是 macOS 平台的包管理软件】 ❯ brew install libu2f-host libusb swig ykpers ❯ git clone git@github.com:Yubico/Yubikey-manager.git ❯ git submodule update --init --r

  • 我已经在我的应用程序中实现了一个网格视图。为了刷新网格,我给了它一个触摸事件。在点击中,我对网格项目做了一些事情。下面是手势检测器的代码- 下面是网格视图上的点击式侦听器- 现在触摸是工作的,但点击检测到另一个项目,而不是点击一个。我该如何解决这个问题?预先感谢

  • 我想检测是否在其他屏幕上做出了特定的手势(不是在应用程序的UI打开时)。 我在一些手机中见过,你做一个“C”的手势,相机就会打开。Android Studio里有这种东西吗?

  • 问题内容: 该文档说明了这一点: 手势始于带有ACTION_DOWN的运动事件,该事件提供了下一个指针的位置。随着每个其他指针的下降或上升,框架将分别生成带有ACTION_POINTER_DOWN或ACTION_POINTER_UP的运动事件。 所以我在活动中完成了onTouchEvent函数的替代: 不幸的是,如果没有输入第二个。该活动包含2图2 OnTouchListener ,我知道 的on

  • 本文向大家介绍Android触摸事件传递机制,包括了Android触摸事件传递机制的使用技巧和注意事项,需要的朋友参考一下 前言:在Android开发中,经常会遇到触摸事件冲突,比如ViewPager的轮播图跟Fragment的划动事件冲突,或者轮播图跟下拉事件冲突,自定义view的事件处理等,本文章将会详细介绍Activity、View、ViewGroup三者的触摸事件传递机制,传递包括三个阶段