【问题标题】:MvvmCross android linker kills bindingMvvmCross android链接器杀死绑定
【发布时间】:2017-02-21 08:29:03
【问题描述】:

我使用 MvvmCross 编写了简单的 adnroid 应用程序。只有两个活动。第一个是 LoginActivity,它包含两个文本框和按钮。在调试模式下使用时工作正常。当 Linker 设置为 None 时,它​​也可以在归档后工作。 问题是当我将链接器设置为 SdkAssembilesOnly 应用程序运行但单击按钮时没有任何反应。我认为绑定不起作用。

  <Button
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:text="Login"
      local:MvxBind="Click LoginCommand" />

在网上冲浪时,我发现有些人使用 LinkerPleaseInclude.cs - 我应该在这个类中添加什么才能使其正常工作?

【问题讨论】:

    标签: c# android xamarin mvvmcross


    【解决方案1】:

    是的 - 添加一个 LinkerPleaseInclude 类,其中包含以下方法:

    public void Include(Button button)
    {
        button.Click += (s, e)
            => button.Text = $"{button.Text}";
    }
    

    还要确保LinkerPleaseInclude 上有[Preserve(AllMembers = true)] 属性。

    【讨论】:

    • 非常感谢它绑定命令。在按钮里面我有 HttpClient 请求,但它不起作用是关于链接器的吗?
    • 我对此表示怀疑...我从来没有遇到过删除 HttpClient 方法的程序集链接问题。不过,我需要查看一些代码才能确定。
    • 在命令内部有使用 HttpClient.PostAsync 的代码,我还在 viewmodel 中添加了字符串属性以显示任何错误或操作 - 这就是我知道按钮已被单击的方式,因为在我编写的命令方法的开头“ButtonClicked”,但几秒钟后字符串消失,没有发生任何事情也添加了尝试捕获,但它没有显示任何内容
    • 禁用链接后发帖成功吗?
    • 在这种情况下,它可能是一个链接问题。您可以尝试的一件事是转到您的 Android 项目的属性 -> Android 选项 -> 链接器,然后将 PCL 程序集的名称放在“跳过链接程序集”框中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多