2017-01-24 4 views
1

ich das Acr.UserDialogs NuGet-Paket installiert haben und ich versuche, eine Eingabeaufforderung zu öffnen und auf das Ergebnis warten .. Ich habe mehr Möglichkeiten ausprobiert, aber nicht bekommen, es funktioniert.
Mein erster Versuch sah wie folgt aus und arbeitete zumindest manchmal:Wie für Ergebnis PromptAsync in Xamarin.Forms warten

bool validInput = false; 
PromptResult pResult; 

PromptConfig pConfig = new PromptConfig 
{ 
    Message = "Some message", 
    MaxLength = 10, 
    Placeholder = "Number...", 

    OnTextChanged = args => 
    { 
     if (args.Value.Length < 1) 
      args.IsValid = false; 

     foreach (char c in args.Value) 
     { 
      if (!char.IsNumber(c)) 
      { 
       args.IsValid = false; 
       break; 
      } 
     } 
    } 
}; 

pResult = await UserDialogs.Instance.PromptAsync(pConfig); 

if(pResult.Ok) 
{ 
    validInput = true; 
} 

if (validInput) 
{ 
    Navigation.PushAsync(new MenuPage())); 
} 

Aber manchmal ist die Aufforderung zeigt nicht auf und pResult.Ok ist sowieso wahr. Ich bekomme, dass ich natürlich warten muss, bis ich das Ergebnis habe ... aber wie?

+0

Ich bin nicht vertraut mit Xamarin Formen, aber ich vermute, es kann ein Ereignis sein, auf 'PromptConfig' wie' schließt'ab und in diesem Fall, Sie können das Ergebnis vielleicht überprüfen. –

+0

Es gibt ein OnAction-Ereignis auf PromptConfig. Zu verwenden, die ich ändern musste 'pResult = erwarten UserDialogs.Instance.PromptAsync (pConfig)' auf 'UserDialogs.Instance.Prompt (pConfig)' ... Das OnAction Ereignis sieht nun wie folgt 'OnAction = args => { if (args.Ok) Navigation.PushAsync (neue MenuPage()); } '. Aber die Eingabeaufforderung erscheint immernoch nur manchmal und in den Fällen, in denen sie nicht angezeigt wird, ist "args.Ok" in "OnAction" "wahr" ... Ich verstehe es nicht. Vielleicht sollte ich die Entwickler auf Git fragen – yiev

+0

Übrigens ist PromptConfig auch eine Klasse von Acr.UserDialogs – yiev

Antwort

0

Wenn jemand in das gleiche Problem laufen soll .. Ich denke, der Grund, warum die „await“ nicht tun, was sie tun sollte, war das Android-Emulator.

Ich weiß nicht, warum, aber auf einem echten Android-Smartphone mit Android 6.0 (der Emulator hat auch Android 6.0 installiert) der Code von oben absolut einwandfrei funktioniert. Und auch auf einen anderen echten Android-Smartphone mit Android 7.0 alles funktionierte ...

Verwandte Themen