【问题标题】:Tapping label crashes app点击标签崩溃应用
【发布时间】:2017-09-26 12:28:58
【问题描述】:

我不知道我的代码有什么问题。有人可以检查我的代码是否有失败/错误吗?我正在尝试列出联系人列表。当我点击电子邮件时,我想向我点击的地址发送邮件。与电话号码相同。 When I tap Email or Tlfnr

我的 xaml.CS 代码:

    private void OnEmailTapped(object sender, EventArgs e)
    {
        var emailMessenger = CrossMessaging.Current.EmailMessenger;
        if (emailMessenger.CanSendEmail)
        {
            emailMessenger.SendEmail(to: ((Label)sender).Text); 
        }
    }

我的 Xaml 代码:

                                <StackLayout x:Name="EmailTapped">
                                    <Label x:Name="OnEmailTapped" Text="{Binding Email}" TextColor="Black" FontSize="Medium" />

                                    <Label.GestureRecognizers>
                                        <TapGestureRecognizer Tapped="OnEmailTapped" CommandParameter="{Binding Email}"/>
                                    </Label.GestureRecognizers>
                                </StackLayout>

我的联系人:

namespace App3
{
public class Kontakter
{
    public string Fuldenavn { get; set; }
    public string Tlfnr { get; set; }
    public string Email { get; set; }

    public List<Kontakter> GetKontakter()
    {
        List<Kontakter> kontakter = new List<Kontakter>
    {
        new Kontakter
        {
            Fuldenavn = "bacon (ANSE)",
            Email = "Random@gmail.com",
            Tlfnr = 12345678,
        },
        new Kontakter
        {
            Fuldenavn = "Anja (ANBI)",
            Email = "Random@hotmail.dk",
            Tlfnr = 87654321,
        },
        new Kontakter
        {
            Fuldenavn = "Benn (BMR)",
            Email = "Random@hotmail.com",
            Tlfnr = 12876534,
        },
        new Kontakter
        {
            Fuldenavn = "Christian (CBE)",
            Email = "Nothing@gmail.com",
            Tlfnr = 18273645,
        },
    };
        return kontakter;
    }
}
}

【问题讨论】:

  • 在我们为您进行检查和调试之前,当您运行此程序时,您会遇到什么错误?你的结果是什么,你的预期结果是什么?
  • 问题是,在我启动程序之前我没有任何错误。但是当我点击任何电子邮件或电话号码时,它会崩溃。就像图片上的一样。 @CodeWarrior
  • 该错误信息非常清楚 - 演员阵容失败。你需要弄清楚发件人的实际类型是什么,显然标签不正确。
  • 正如其他人所说,错误消息会告诉您究竟出了什么问题,当这是一个无效的转换时,您正在转换到一个标签......
  • 你能做些什么来解决它? @MartynWeber

标签: c# email xamarin label call


【解决方案1】:

我有类似的问题,当我删除它停止崩溃

if (emailMessenger.CanSendEmail)

【讨论】:

    【解决方案2】:

    你可以做的就是将发送者作为一个控件。

    Control castControl = (Control)sender
    

    或者设置一个断点并将值分配给一个随机变量并悬停发送者对象

    然后对断点悬停中显示的特定类型进行强制转换

    我认为发件人可能是TapGestureRecognizer 而不是Label

    虽然我的显示为 Label,但这只是为了让您了解如何找到发件人对象的 type

    【讨论】:

    • 你能给我一些代码吗?我不知道该怎么办@Martyn Weber
    • 我已经给了你代码,你需要做的是将 sender 对象分配给一个变量并设置一个断点,当它到达断点时,你可以将鼠标悬停在 sender 对象上,它会告诉你对象类型是什么,然后将其转换为该对象类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多