Android MvvmCross Messenger中的NullReferenceException
这是我的ViewModel中的代码Android MvvmCross Messenger中的NullReferenceException,android,xamarin,viewmodel,mvvmcross,Android,Xamarin,Viewmodel,Mvvmcross,这是我的ViewModel中的代码 public ICommand GoToCartCommand{ get{ return new MvxCommand (() => { var cartViewModel = Mvx.Resolve<CartViewModel>(); if (cartViewModel != null)
public ICommand GoToCartCommand{
get{
return new MvxCommand (() => {
var cartViewModel = Mvx.Resolve<CartViewModel>();
if (cartViewModel != null)
{
cartViewModel.cartlist.Add(new CartItemViewModel() { Name = Name, ID = ID, UnitPrice = double.Parse(Price), Quantity = 1, Description = Description, Image = Image });
}
cartListCount = cartViewModel.cartlist.Count;
var messanger = Mvx.Resolve<IMvxMessenger>();
var message = new MyMessage(this,"Product has been added",cartListCount);
messanger.Publish(message);
});
}
}
public class MyMessage : MvxMessage
{
public int CartList_Count{ get; set;}
public string Message{ get; set;}
public MyMessage(object sender,string _message,int _cartlist_count) : base(sender) {
this.Message = _message;
this.CartList_Count = _cartlist_count;
}
}
public ICommand和GoToCartCommand{
获取{
返回新的MvxCommand(()=>{
var cartViewModel=Mvx.Resolve();
如果(cartViewModel!=null)
{
cartViewModel.cartlist.Add(新的CartItemViewModel(){Name=Name,ID=ID,UnitPrice=double.Parse(Price),Quantity=1,Description=Description,Image=Image});
}
cartListCount=cartViewModel.cartlist.Count;
var messanger=Mvx.Resolve();
var消息=新的MyMessage(此“产品已添加”,cartListCount);
发布(消息);
});
}
}
公共类MyMessage:MvxMessage
{
公共int CartList_Count{get;set;}
公共字符串消息{get;set;}
公共MyMessage(对象发送方,字符串消息,int cartlist计数):基(发送方){
this.Message=\u Message;
this.CartList\u Count=\u CartList\u Count;
}
}
在我看来,这是一段代码:
var messenger = Mvx.Resolve<IMvxMessenger>();
_token = messenger.Subscribe<MyMessage>(OnInputIsNeeded,MvxReference.Strong);
private void OnInputIsNeeded(MyMessage _Message)
{
Toast.MakeText (this.Activity,_Message.Message, ToastLength.Short).Show();
}
var messenger=Mvx.Resolve();
_令牌=messenger.Subscribe(onInputsNeed,MvxReference.Strong);
私有void onInputsNeed(MyMessage\u Message)
{
Toast.MakeText(this.Activity,_Message.Message,ToastLength.Short).Show();
}
这里的问题是,当我转到下一个视图OnInputisNeeded
后返回此视图时,该方法会被调用两次。
当从这个视图返回时,当我再次来到这个视图并单击按钮时,我会得到一个NullReferenceException
解决办法是什么
这是什么意思:
没有为MvxSubscriberChangeMessage类型的邮件注册任何内容
如何注册
MvxSubscriberChangeMessage
?我已经在中回答了这个问题。至于MvxSubscriberChangeMessage,这是一个内部消息,您可以像其他任何消息一样订阅。Mvx为没有订阅服务器的任何已发布消息输出诊断。如果你不在乎这条消息,你可以忽略它。是的,谢谢它完全有效!!@@killmanI已经在MvxSubscriberChangeMessage中回答了这个问题,这是一个内部消息,您可以像其他任何东西一样订阅它。Mvx为没有订阅服务器的任何已发布消息输出诊断。如果你不在乎这条消息,你可以忽略它。是的,谢谢它完全有效!!@@杀手