Xamarin.Forms和MvvmCross Messenger插件上的NRE
我正在尝试使用MvvmCross Messenger插件,但我只是简单地让它工作。。它总是返回一个“空引用异常” 下面是我为测试它而创建的BaseViewModel:Xamarin.Forms和MvvmCross Messenger插件上的NRE,mvvm,xamarin.android,xamarin.forms,mvvmcross,nullreferenceexception,Mvvm,Xamarin.android,Xamarin.forms,Mvvmcross,Nullreferenceexception,我正在尝试使用MvvmCross Messenger插件,但我只是简单地让它工作。。它总是返回一个“空引用异常” 下面是我为测试它而创建的BaseViewModel: namespace TestProject.Core.ViewModels { public class BaseViewModel : MvxViewModel { private readonly IMvxMessenger _messenger; public BaseViewModel(IMvxMess
namespace TestProject.Core.ViewModels
{
public class BaseViewModel : MvxViewModel
{
private readonly IMvxMessenger _messenger;
public BaseViewModel(IMvxMessenger messenger)
{
messenger = _messenger;
}
public IMvxCommand TestMessageCommand
{
get { return new MvxCommand(DoTestMessage); }
}
private void DoTestMessage()
{
var message = new TestMessage(this, "Potato");
_messenger.Publish(message);
}
}
}
以下是应接收消息的另一个ViewModel:
namespace TestProject.Core.ViewModels
{
public class HomeViewModel : MvxViewModel
{
private string _testMessage = string.Empty;
private readonly MvxSubscriptionToken _token;
public HomeViewModel(IMvxMessenger messenger)
{
_token = messenger.Subscribe<TestMessage>(OnTestMessage);
}
private void OnTestMessage(OnTestMessage testMessage)
{
_testMessage = testMessage.Result;
}
public ICommand ShowBasePageCommand
{
get { return new MvxCommand(() => ShowViewModel<BaseViewModel>()); }
}
}
}
namespace TestProject.Core.Messages
{
public class TestMessage
: MvxMessage
{
public QRCodeResultMessage(object sender, string result) : base(sender)
{
Result = result;
}
public string Result { get; private set; }
}
}
我将主页上的一个按钮绑定到“ShowBasePageCommand”,在BasePage上还有另一个按钮绑定到“TestMessageCommand”
完全例外:
System.NullReferenceException: Object reference not set to an nstance of an object.
at TestProject.Core.ViewModels.BaseViewModel.DoTestMessage () [0x00014] in /Users/diegopatrocinio/Projects/Xamarin/TestProject/TestProject.Core/ViewModels/BaseViewModel.cs:49
at MvvmCross.Core.ViewModels.MvxCommand.Execute (System.Object parameter) [0x00009] in <69bce0378e8e413982d3b552d7e387a8>:0
at Xamarin.Forms.Button.Xamarin.Forms.IButtonController.SendClicked () [0x0000a] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Button.cs:121
at Xamarin.Forms.Platform.Android.ButtonRenderer+ButtonClickListener.OnClick (Android.Views.View v) [0x0000f] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Renderers\ButtonRenderer.cs:303
at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x00011] in /Users/builder/data/lanes/4009/3a62f1ea/source/monodroid/src/Mono.Android/platforms/android-25/src/generated/Android.Views.View.cs:1857
at at (wrapper dynamic-method) System.Object:1b16fb3a-f768-4a9f-8e2e-60f0085ed7fb (intptr,intptr,intptr)
请注意,构造函数已反转参数和类成员:
public BaseViewModel(IMvxMessenger messenger)
{
messenger = _messenger;
}
应该是
public BaseViewModel(IMvxMessenger messenger)
{
_messenger = messenger;
}
请注意,构造函数已反转参数和类成员:
public BaseViewModel(IMvxMessenger messenger)
{
messenger = _messenger;
}
应该是
public BaseViewModel(IMvxMessenger messenger)
{
_messenger = messenger;
}
“什么是完全例外和stacktrace?”therealjohn补充道!“完全异常和stacktrace可能重复吗?”therealjohn补充道!可能的复制品真的是这样。。我想我已经编写了太长时间了,没有注意那个细节,我检查了所有的东西,除了这个lol。。现在我更想念ReSharper,希望他们能在Mac上为Visual Studio发布它。谢谢你,伙计!如果你想要R#,你可以在mac上使用Riderfeeling@CheesebaronRider的问题是缺少用于编辑XAML的实时预览,这对我很有帮助,添加它会很完美,或者只是发布了针对VisualStudio的ReSharper..真的是这样。。我想我已经编写了太长时间了,没有注意那个细节,我检查了所有的东西,除了这个lol。。现在我更想念ReSharper,希望他们能在Mac上为Visual Studio发布它。谢谢你,伙计!如果你想要R#,你可以在mac上使用Riderfeeling@CheesebaronRider的问题是缺少用于编辑XAML的实时预览,这对我很有帮助,添加它会很完美,或者只是发布ReSharper for VisualStudio。。