Xamarin.Forms应用程序在Click事件处理程序上崩溃

时间:2017-12-14 21:34:12

标签: c# ios xamarin.forms

我使用Visual Studio for Mac创建了一个小应用程序,用于iOS和Xamarin Forms。它有三个XAML页面。由于此应用程序打算发送无法使用模拟器完成的消息,因此,我尝试在我的iPhone上使用Xamarin Live。应用程序已安装并在iPhone Xamarin Live上显示OK,但是当我点击主页上的按钮时,它会将我们按照预期完全按照消息页面进行操作。 “消息”页面上有一个“发送消息”按钮,当单击此按钮时,会显示一个异常,说明未捕获的异常:索引超出了数组的范围(IndexOutOfRangeException)'。它似乎是页面堆栈的问题,但不幸的是,我无法确定它。以下是代码。

单击主页上的处理程序

if (xMessagePage == null)
        xMessagePage = new xMessagePage();
    try
    {
        await Navigation.PushAsync(xMessagePage);
    }
    catch(Exception ex)
    {
        DisplayAlert("BtnMessage_Clicked", ex.Message, "OK");
    }

单击消息页面上的Handler,尝试调出UIActivityViewController

public void BtnMessage_Clicked(Object sender, EventArgs eArgs)
{
    uMessageController umc = new uMessageController();

    try
    {
         umc.SendTextMessage("en-us", eMessageType.Text);
    }
    catch(Exception ex)
    {
        uShareMessages.ShowMessageBox("Message_Clicked", ex.Message);
    }
    finally
    {
    }
}

void uMessageController::SendTextMessage(string strTextMsg, "en-us", eMessageType.Text)
{
try
{
string strDefaultMsg = "MyTest Message1"
string strDefAttachmentName = "NYC";
if(string.IsNullOrEmpty(strTextMsg))
strTextMsg = strDefaultMsg;
string strTextMsg1 = uShareMessages.GetMessageString(strCulture);
string existingSound = NSBundle.MainBundle.PathForResource(strDefAttachmentName, "mp3");

            var remFileUrl = NSUrl.FromFilename(existingSound);

            lstMessageItems = new System.Collections.Generic.List<NSObject> { new NSString(strTextMsg1 ?? string.Empty) };
            lstMessageItems.Add(remFileUrl);
            UIActivityViewController avController = new UIActivityViewController(lstMessageItems.ToArray(), null);

            avController.ExcludedActivityTypes = vcActivitiesExcluded;
            avController.CompletionWithItemsHandler = ActivityViewController_CompletionHandler;
            UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(avController, true, null);

        }
        catch(Exception ex)
        {
            uShareMessages.ShowMessageBox("SendTextMessage", ex.Message);
        }
}

提前致谢, 辩护人

0 个答案:

没有答案