2013-04-24 44 views
1

注:下面所有的代码是基于C#/单声道/ Xamarin.Android。从信使后检索处理程序被瓜分如意图Android中

我有一个在某一个点开始的活动,并为其传递一个处理程序后台服务,裹着一个斜挎内:

intent.PutExtra("myHandler", new Messenger(handler)); 
context.StartActivity(intent); 

当活动开始时,我想的是处理器从意图解开并在用户执行某些操作时使用它将消息发送回服务,例如单击按钮。我尝试了很明显的:

override void OnCreate(Bundle bundle) 
{ 
    ... 

    myButton.Click += (s, e) => { 
     var messenger = (Messenger)Intent.GetParcelableExtra("myHandler"); 
     var handler = (Handler)messenger.Binder; // This fails with invalid cast. 

     handler.SendMessage(new Message() { What = MyButtonClicked }); 
    }; 
} 

调试器告诉我,message.Binder是类型的处理程序,但转换失败。 Google没有找到有用的东西。我可能做了一件非常错误的事,不是吗?

编辑:OMG,我设法忽略了Messenger.Send()方法。我应该使用它将消息发送给包装的Handler,显然!

回答

1

正确的方法是使用messenger.Send()方法。

相关问题