当" Link SDK Assemblies"时,Xamarin.Android TextView不会引发更改事件。被选中

时间:2017-12-06 18:19:20

标签: xamarin xamarin.android linker mvvmcross

我正在使用MvvmCross在Xamarin的一个项目上工作,尝试使用链接器来降低Android和iOS上的应用程序大小(没有表单。)

在Android上,当我选择"仅限链接SDK程序集"时,项目构建并运行时不会出现崩溃或错误消息。但是,EditText控件在文本更改时没有正确响应,数据绑定不会更新,并且他们的Changed事件处理程序也不会被调用。

当我选择" Don&#tt Link"时,一切正常。更新绑定并调用事件处理程序。

我查看了Xamarin Linker documentation,并且我知道如何确保保留各种程序集,类型和方法。我的问题是我根本不知道需要保留什么,也不知道如何找出答案。我尝试过像bitdiffer这样的工具但没有成功。

任何人都可以帮我弄明白我需要保留什么吗?

2 个答案:

答案 0 :(得分:1)

如果LinkerPleaseInclude文件缺少对EditText的引用,则通常会出现此行为。原因是链接器剥离了应用程序中未引用/使用的所有内容。通过LinkerPleaseInclude文件中的引用,链接器将注意到用法并保留事件处理程序。

答案 1 :(得分:1)

将LinkerPleaseInclude.cs文件添加到包含以下代码的Android项目中:

public class LinkerPleaseInclude
{
    public void Include(TextView text)
    {
        text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text;
        text.Hint = "" + text.Hint;
    }
}

EditText继承自TextView,因此这会通过让链接器认为您引用TextView.AfterTextChanged事件来解决您的问题。您可以找到参考Android LinkerPleaseInclude.cs文件here

相关问题