繁体   English   中英

Android AlertDialog框未显示

[英]Android AlertDialog Box Not Showing

我搜索了Stackoverflow,查看了Android Developer中的示例,以及一些书籍,我只是没有得到它。

我正在尝试显示一个中断程序流的AlertDialog Box。 我见过的大多数例子都没有对话框后的代码,我需要程序停止执行,直到按下AlertDialog按钮。 好像AlertDialog是从另一个线程创建的,我不知道如何检索该线程。

程序逻辑:如果解析不好,程序将强制关闭。 我想让用户知道重新启动程序,一切都会正常工作。 (我正在删除并重新创建表,并在程序启动时重新填充它们)

这是一些代码:

if(database populated)
{
  ....code.....

  if(parseok.contentEquals("Error"))
  {
    doForceClose();
  }
displayDate = "Last: " + parseok;  //I don't want the program to continue to here.
//Rest of code in the method.  If I continue the program will Force Close
}
else
  do something else

这是AlertDialog方法:

private void doForceClose()
{
  String themessage = "Because some of the parameters have changed in the yada yada"; 

  AlertDialog.Builder ad = new AlertDialog.Builder (this);
  ad.setTitle("Internal Error");
  ad.setMessage(themessage);
  ad.setPositiveButton("Sorry", new OnClickListener()
  {
    public void onClick(DialogInterface dialog, int which)
    {
    finish();
    return;
    }
  });
  ad.create();
  ad.show();        
}

除了广告没有显示,程序继续强制关闭。

显然我没有得到什么。 有任何想法吗?

编辑:我在一个扩展Activity的类中

我正在尝试显示一个中断程序流的AlertDialog Box。

这在Android和其他各种UI系统中都不存在。

我需要我的程序停止执行,直到按下AlertDialog按钮。

不,你没有。 事件驱动编程已经使用了几十年。

程序逻辑:如果解析不好,程序将强制关闭。

这是你的代码 - 重写它以表现得更好。

我不希望程序继续在这里。

然后使用else ,或return ,或其他东西。

除了广告没有显示,程序继续强制关闭。

在主应用程序线程再次获得控制权来处理您的请求之前,您的对话框不会出现 - show()是异步的。 你很可能在那之前崩溃。

简而言之,您处理解析问题的策略存在根本缺陷。

Commonsware的回应是正确的。 让我试着用不同的话说同样的话。 警报对话框不会中断控制流。 当程序等待输入时,它只是“左显示”。

因此序列showAlert(“这是一条消息); showGallery(); return;

这只是暂时的。 解决这个问题的方法是将showGallery()函数调用放在来自AlertDialog的Positive响应中。

换句话说。 如果您想使用AlertDialog中断应用程序的流程(明智地指出这是错误的想法),那么将对话后要执行的代码放入AlertDialog的onClick回调中。

好的,我有类似的情况。 我期待弹出一个对话框,但事实并非如此。 相反,发生了异常。 发生异常的地方位于我期待对话的地方后面几行。 我修复了这个异常然后我的对话框出现了。

它看起来很奇怪,我认为对话框需要时间才能在程序继续运行时出现,然后程序在对话之前按时间顺序(但不是以编程方式)遇到异常。 这就是我修复异常位置后得到对话的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM