?
Windows10應(yīng)用開發(fā):掛起導(dǎo)航出錯(cuò):
GetNavigationState doesn't support serialization of a parameter type which was passed to Frame.Navigate
查了許多資料都沒解決,看來(lái)只能靠自己了,在一段時(shí)間大排查之后,終于找到了原因。
首先舀射,說(shuō)明一下這個(gè)異常出現(xiàn)的地方,應(yīng)用場(chǎng)景:
場(chǎng)景:
我們?cè)趯?duì)應(yīng)用進(jìn)行掛起,關(guān)閉的時(shí)候陵吸,有時(shí)候需要讓導(dǎo)航記住當(dāng)前的頁(yè)面,當(dāng)下次打開應(yīng)用的時(shí)候介牙,能恢復(fù)到上次關(guān)閉應(yīng)用的頁(yè)面壮虫。
此時(shí),我們需要在APP.xaml.cs文件里的OnSuspending 方法里面环础,調(diào)用 GetNavigationState()方法 保存當(dāng)前頁(yè)面囚似。
在OnLaunched 方法里面,進(jìn)行恢復(fù)操作喳整。具體如下:這個(gè)方法在程序打開時(shí)會(huì)調(diào)用谆构。
實(shí)現(xiàn)的就是這樣一個(gè)功能。
而異常就發(fā)生在圖中紅色標(biāo)記的地方框都。
其實(shí)搬素,這個(gè)異常是說(shuō): ?導(dǎo)航到這個(gè)頁(yè)面的時(shí)候呵晨,在掛起時(shí),里面的參數(shù)不能被GetNavigationState方法序列化熬尺!摸屠、
那么為什么不能被序列化呢?
答案:?
原因就是 我從主頁(yè)面導(dǎo)航到第二個(gè)頁(yè)面的時(shí)候粱哼,附帶了一個(gè)不能被序列化的參數(shù)季二!當(dāng)導(dǎo)航到第二個(gè)頁(yè)面再執(zhí)行掛起時(shí),這個(gè)參數(shù)不能別序列化揭措,從而報(bào)了異常胯舷!
詳細(xì)如下:
這是在主頁(yè)面像第二個(gè)頁(yè)面導(dǎo)航的時(shí)候,我為了在第二個(gè)頁(yè)面得到主頁(yè)面的數(shù)據(jù)绊含,于是桑嘶,把這兩個(gè)數(shù)據(jù)用ValueSet 類保存。(ValueSet類實(shí)現(xiàn)的是IDictionary 接口躬充,是以鍵值對(duì)的方式進(jìn)去存儲(chǔ)的逃顶,(與處無(wú)關(guān))) 導(dǎo)航到第二個(gè)頁(yè)面的時(shí)候傳了過(guò)去。
所以這個(gè)類型是不能被序列化的充甚。從而報(bào)異常以政。問(wèn)題終于找到了!希望大家在開發(fā)的過(guò)程中遇到這個(gè)問(wèn)題可以迅速的得到解決伴找!歡迎加群?193148992 共同學(xué)習(xí)交流盈蛮。