我的主页上有一个按钮可以导航到下一个视图。这在我的 Windows PC (Visual Studio 2017) 上的模拟 Android 设备 (Android 8.1 加速 x86) 上的调试构建中非常有效。
从我的角度来看,该按钮绑定到我的视图模型,如下所示:
<Button Text="Report error" Command="{Binding NewErrorCommand}" />
视图模型代码:
public Command NewErrorCommand
{
get
{
return _newErrorCommand ?? (_newErrorCommand = new Command(ExecuteNewErrorCommand, CanNewErrorCommand));
}
}
private bool CanNewErrorCommand(object arg)
{
return true;
}
private async void ExecuteNewErrorCommand(object obj)
{
try
{
// I'll get here in simulation/debug build but not in release build on device
await Application.Current.MainPage.DisplayAlert("Go", "Go", "Ok");
await _navigation.PushAsync(new TestView(), false);
}
catch (Exception exc)
{
await Application.Current.MainPage.DisplayAlert("Error", exc.Message, "Cancel");
}
}
我的整个应用程序在模拟器上运行得很好。如果我在真实的物理设备上按下按钮,我会看到视觉反馈(按钮改变颜色),但什么也没有发生。
到目前为止我尝试过的:
- 应用了一些 printf 调试
DisplayAlert
(没打到,看源码)
- 将蓝牙鼠标连接到我的 Android 设备(Android 6.0),以防鼠标单击和手指点击之间存在差异(仍然没有工作按钮)
您可以帮助 Xamarin.Forms 初学者吗?
Update
我通过 USB 连接我的 Android 手机进行调试。该按钮在调试模式下工作(命中断点,打开新页面),但在发布版本中仍然不起作用。
根据请求链接器设置:
如果您将链接选项设置为“仅 SDK 程序集”,则发布版本将起作用,在Build
Android 项目属性部分。
当。。。的时候linker启用并设置为“SDK 和用户程序集”,删除了很多代码(强制不要使用)。就你而言,NewErrorCommand
属性被删除,因为该工具假设您没有使用它。
如果您将其设置为“仅 SDK 程序集”,则它会起作用,因为在该配置下,链接器不会接触您自己的任何程序集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)