Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android MvvmCross Messenger中的NullReferenceException_Android_Xamarin_Viewmodel_Mvvmcross - Fatal编程技术网

Android MvvmCross Messenger中的NullReferenceException

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)

这是我的ViewModel中的代码

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为没有订阅服务器的任何已发布消息输出诊断。如果你不在乎这条消息,你可以忽略它。是的,谢谢它完全有效!!@@杀手