2016-05-05 5 views
2

Ich habe vor kurzem angefangen mit MVVM Light zu arbeiten und habe den IDialogService zum ersten Mal benutzt.Xamarin.Forms MVVM Light IDialogService ShowMessage wirft native Ausnahme

Mein ViewModelLocator

ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default); 

// Register the dialog service provided by mvvm light 
SimpleIoc.Default.Register<IDialogService, DialogService>(); 

Mein Ansichtsmodell

private IRestService _restService; 

public OrderViewModel (IDialogService dialogService) 
{ 
    _dialogService = dialogService; 
} 

Und schließlich mit Showmessage:

await _dialogService.ShowMessage("test", "test", "Ok", "Nop", (result) => { 
    if (result) 
    { 
     //... 
    } 
    else 
    { 
     //... 
    } 
}); 

Welche diese Ausnahme verursacht:

Java.Lang.NullPointerException: Attempt to invoke virtual method 
'android.content.res.Resources$Theme android.content.Context.getTheme()' 
on a null object reference 

Kann mir jemand sagen, was los ist?

+0

Ist Ihre Aktivität erben von mvvm Licht des 'ActivityBase'? –

+0

In welcher Aktivität? – FriedSloth

+1

Bitte sehen Sie meine Antwort –

Antwort

1

Ich denke, das Problem ist, dass die aktuelle Aktivität nicht festgelegt wurde. Das Problem ist, dass MvvmLight CurrentActivity vom Typ ActivityBase benötigt. Also ich denke, die DialogService nicht wirklich kompatibel mit Formularen, da Forms die Aktivität von FormsAppCompatActivity erben muss. Das würde eine schöne rautenförmige Vererbung ergeben, was nicht möglich ist, weil C# keine Mehrfachvererbung unterstützt.

So könnte man ACR Benutzer Daialogs verwenden: https://www.nuget.org/packages/Acr.UserDialogs/

Siehe https://github.com/aritchie/userdialogs#android-initialization-in-your-main-activity für das Setup.

Und Sie können sich registrieren, es

SimpleIoc.Default.Register<IUserDialogs>(UserDialogs.Instance); 
+0

Okay, ich benutzte Acr Userdialogs bevore, ich dachte nur, dass ich die bereits implementierten Benutzerdialoge von mvvm light verwenden könnte. – FriedSloth