Benutzer mit den meisten Antworten
Fehler: GetNavigationState doesn't support serialization of a parameter [...]

Frage
-
Hi,
habe wieder mal eine Frage!
Und zwar habe ich eine App programmiert und will dabei den SuspensionManager nutzen, damit die App nach der Bildschirmsperre (Windows Phone) trotzdem noch normal weiter läuft!
Das Frame wird so aufgerufen:
this.Frame.Navigate(typeof(Lesen), param);
wobei param folgendermaßen aussieht:
int[] param = new int[5];
Ich möchte also von einem Frame zum nächsten 5 INT-Werte übergeben...
Kommt die Bildschirmsperre wird die SaveAsync Methode ausgeführt, allerdings wird die App mit folgender Exception in dieser Methode beendet:
GetNavigationState doesn't support serialization of a parameter type which was passed to Frame.Navigate
Es ist definitiv das "param" was das Problem ist, allerdings konnte ich bei Google keine entsprechende Abhilfe zu diesem Fehler finden!
Wie kann ich 5 variablen übergeben ohne diese Exception beim SaveAsync zu bekommen?
Danke schon mal!
Antworten
-
Hi,
der zweite Parameter muss laut Dokumentation ein einfacher Typ sein (https://msdn.microsoft.com/de-de/library/windows/apps/hh702394.aspx) daher funktioniert die Übergabe eines Arrays nicht. Jedoch könntest du dir ein oder zwei Hilfsmethoden basteln, die dein Array in ein String umwandeln und wieder zurück. Den String kannst du problemlos als Parameter in der Navigate-Methode verwenden.
public string ParamToString(int[] param) { string result = string.Format("{0}_{1}_{2}_{3}_{4}", param[0], param[1], param[2], param[3], param[4]); return result; } public int[] StringToParam(string s) { string[] splits = s.Split('_'); int[] param = new int[5]; for (int i = 0; i < param.Length; i++) { param[i] = int.Parse(splits[i]); } return param; }
Gruß
Chris
Code Samples: Code Samples
Chrigas Blog: Chrigas Blog
Alle Antworten
-
Hi,
der zweite Parameter muss laut Dokumentation ein einfacher Typ sein (https://msdn.microsoft.com/de-de/library/windows/apps/hh702394.aspx) daher funktioniert die Übergabe eines Arrays nicht. Jedoch könntest du dir ein oder zwei Hilfsmethoden basteln, die dein Array in ein String umwandeln und wieder zurück. Den String kannst du problemlos als Parameter in der Navigate-Methode verwenden.
public string ParamToString(int[] param) { string result = string.Format("{0}_{1}_{2}_{3}_{4}", param[0], param[1], param[2], param[3], param[4]); return result; } public int[] StringToParam(string s) { string[] splits = s.Split('_'); int[] param = new int[5]; for (int i = 0; i < param.Length; i++) { param[i] = int.Parse(splits[i]); } return param; }
Gruß
Chris
Code Samples: Code Samples
Chrigas Blog: Chrigas Blog