【问题标题】:Unable to dismiss AlertDialog无法关闭警报对话框
【发布时间】:2014-02-20 16:07:24
【问题描述】:

您好,需要显示来自服务的 AlertDialog。

这是我的实现。

我添加了权限:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

但我无法关闭对话框!!!

我点击确定按钮但id没有消失!!!

所有系统都在该对话框上冻结!!!

请帮忙!!!

public class CreditcheckService extends IntentService {
AlertDialog dialog;
public CreditcheckService() {
    super("CreditcheckService");
}

@Override
protected void onHandleIntent(Intent intent) {
    AlertDialog.Builder builder = new AlertDialog.Builder(
            getApplicationContext());

    builder.setMessage(R.string.please_connect).setTitle(
            R.string.unable_to);
    builder.setPositiveButton(R.string.okay_action,
            new OnClickListener() {
        @Override
        public void onClick(DialogInterface arg,
                int which) {dialog.cancel();
        }
    });
    dialog= builder.create(); 
    dialog.getWindow().setType(
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    dialog.show();
}

【问题讨论】:

  • 调用 dialog.dismiss();在 onClickListenr()
  • @Manveer Chawla 谢谢Manveer,试过了,没有成功:-(((

标签: android


【解决方案1】:

这对我的服务有用

              try{
                    new Thread() {
                        @Override
                        public void run() {
                            Looper.prepare();
                            AlertDialog.Builder builder = new AlertDialog.Builder(
                                    getApplicationContext());

                            builder.setMessage("My messgae").setTitle("My Title");
                            builder.setPositiveButton("Ok",
                                    new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface arg,
                                                            int which) {dialog.cancel();
                                        }
                                    });

                            dialog= builder.create();
                            dialog.getWindow().setType(
                                    WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
                            dialog.show();
                            Looper.loop();
                        }
                    }.start();
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }

【讨论】:

    【解决方案2】:

    试试这个:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("")
                .setCancelable(false)
                .setPositiveButton("Yes",null);
        AlertDialog alert = builder.create();
        alert.show();   
    }
    

    【讨论】:

    • 所以如果你用 onHandleIntent 方法中的所有代码替换你没有成功?所以我认为方法内的代码不是你的问题......如果你让方法为空会发生什么?
    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多