在未处理的异常上显示对话框

时间:2013-04-20 08:59:31

标签: c# android xamarin.android xamarin

我希望能够在我的Xamarin Android应用程序崩溃时显示一个对话框。像'抱歉的应用程序已崩溃的东西。您是否要向开发人员发送错误报告?“。

我已经连接到Thread.DefaultUncaughtExceptionHandler,它在捕获到异常时调用UncaughtException。

当捕获到异常时,我尝试启动一个新活动来显示对话框 - 创建对话框但只显示带有标题的空白对话框。永远不会调用OnCreate,对话框似乎只是挂起。

如果我在应用程序运行时调用代码正常显示对话框,则显示并正确运行,因此对话框代码似乎没有任何问题。

任何人都知道如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

目前,没有支持和推荐的方法来捕获和识别Xamarin.Android中的未处理异常。希望他们尽快解决这个问题。

请参阅http://mono-for-android.1047100.n5.nabble.com/Catch-all-the-exceptions-td5165993.html

见Jonathan Pryor-2帖子。

答案 1 :(得分:1)

我找到了一种捕捉未处理异常的方法。它取决于抛出异常的位置。如果在后台线程上发生异常,可以通过在继承自Mono Application类的类中连接以下事件来解决问题。

AppDomain.CurrentDomain.UnhandledException

我认为您的应用已崩溃,系统没有可用于创建新活动和显示对话框的上下文。

我在下面的链接中使用了这个例子,只要异常发生在主ui线程之外,我就能恢复并显示祝酒词,所以我相信它可以用来做你需要的。

更多信息: http://xandroid4net.blogspot.com/2013/11/how-to-capture-unhandled-exceptions.html

答案 2 :(得分:0)

当应用程序与您提供的示例崩溃时,我能够显示Toast消息。但我无法显示警报窗口。 我正在编写以下代码,以便在Android设备的UnHandled Exception事件中显示和警告消息。

 'alert.SetTitle("Un Handled Exception Event");
 SetMessage("Un Handled Exception Event triggered");
 SetCancelable(true);
 Show();'