因此,我有一个ViewModel,可以从中按下按钮时按下一个具有主详细信息页面的新视图。
发生的事情是,当用户按下主视图上的按钮时,该应用程序尝试连接到蓝牙4.0设备。该应用程序连接到蓝牙设备后,我希望它显示一个具有主详细信息页面菜单的新视图。
我的viewModel以INavigation
作为参数,并使用它来推送具有masterdetail视图的新页面。
我得到的以下错误是:
Android.Util.AndroidRuntimeException:“动画师只能在Looper线程上运行”
我意识到,当我绕过蓝牙设备的连接时,我再也不会出错。
以下代码可以正常工作:
public CarouselViewModel(INavigation navigation)
{
navigationElement = navigation; //This has a setter
viewTemperature = new Command( () =>
{
isConnecting = true;
changeView();
//Bluetooth.Scan();
});
//bluetoothDevice.adapter.DeviceConnected += (s, e) =>
//{
// changeView();
//};
}
public async void changeView()
{
_masterDetailPage.Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(TemperaturePage)));
await _navigation.PushModalAsync(_masterDetailPage);
isConnecting = false;
}
但是,如果我取消注释与蓝牙相关的代码,并在button命令中注释我的changeView()调用,则会收到错误消息!
我不知道为什么会出现此错误,因为对我来说,除了我已连接到蓝牙设备外,看起来没有任何改变。