PushModalAsync上的AndroidRunTimeException

时间:2019-08-31 17:38:38

标签: c# xamarin bluetooth-lowenergy

因此,我有一个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()调用,则会收到错误消息!

我不知道为什么会出现此错误,因为对我来说,除了我已连接到蓝牙设备外,看起来没有任何改变。

0 个答案:

没有答案