2016-12-22 2 views
0

Ich arbeite an einer Android App, die MvvmCross und AndHUD verwendet, um einen Fortschrittsdialog anzuzeigen. Ich habe einen IDialogService Schnittstelle und eine Implementierung auf Android:AndHUD Dialog nicht angezeigt, wenn in Befehl aufgerufen

protected Activity CurrentActivity => Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; 


    /// <summary> 
    ///  Shows a loading dialog on the whole display. 
    /// </summary> 
    public void ShowLoadingDialog() 
    { 
     AndHUD.Shared.Show(CurrentActivity, Strings.LoadingLabel); 
    } 

    /// <summary> 
    ///  Closes the Loading Dialog. 
    /// </summary> 
    public void HideLoadingDialog() 
    { 
     AndHUD.Shared.Dismiss(CurrentActivity); 
    } 

Die Schnittstelle über den Konstruktor injiziert wird. Wenn ich den Konstruktor aufrufen:

 dialogService.ShowLoadingDialog(); 

es funktioniert perfekt. Aber wenn ich es im Command anrufe, passiert nichts.

public MvxCommand ImportContactsCommand => new MvxCommand(ImportContacts); 


    private async void ImportContacts() 
    { 
     dialogService.ShowLoadingDialog(); 

     // logic 

     dialogService.HideLoadingDialog(); 
     await dialogService.ShowMessage("Done!", "Import finished."); 
    } 

Interessant ist, dass der zweite Dialog aufgerufen wird. Irgendeine Idee, was hier falsch ist?

Antwort

0

Ich habe es gefunden. Ich muss die Logik async in einer Aufgabe ausführen:

await Task.Run(() => Import()); 
Verwandte Themen