2014-02-18 58 views
2

我有一箇中間的「加載」頁面,我的遊戲發送到那裏,它有顯示「正在加載...」文本,而相當大的遊戲頁面加載時顯示:導航失敗後Windows Phone:RemoveBackEntry

private void OnLoaded(object sender, RoutedEventArgs e) 
{ 
    Dispatcher.BeginInvoke(() => 
     { 
      try 
      { 
       NavigationService.Navigate(new Uri("/GamePage.xaml", UriKind.Relative)); 
       NavigationService.RemoveBackEntry(); 
      } 
      catch (InvalidOperationException) 
      { 
      } 
     }); 
} 

然後當你點擊後退按鈕,你去的主網頁,而不是返回到加載屏幕。頁面上沒有其他邏輯。

但是我剛剛收到了一個商店提交拒絕:顯然在三星Focus和Odyssey上,加載頁面的導航條目沒有被刪除,並且當用戶點擊後退按鈕時,用戶被髮回到加載頁面,而不是回到主菜單。我猜RemoveBackEntry失敗。

這看起來像它應該工作,我無法重現的錯誤,我沒有關注或奧德賽的工作。有人知道可能會出錯嗎?

+0

這裏最好的解決將是一個beta測試用這樣的手機,因爲它很難說。也許有人在這裏擁有這樣的電話會有幫助。也許對於不加載頁面的用戶,你可以放入OnLoad,只需導航context = true,然後在導航後刪除back條目(取決於context = true)後在GamePage中。如果崩潰用戶至少會在GamePage中。 – Romasz

回答

0

我想你應該更換:

NavigationService.RemoveBackEntry(); 

有:

while (NavigationService.CanGoBack) 
{ 
    NavigationService.RemoveBackEntry(); 
} 
+0

但我不想刪除所有回來的條目。只有一個。另外,這將如何幫助?爲什麼我以前的代碼沒有工作? – RandomEngy

+0

是否只想移除加載頁面?我也沒有發現問題。 –

+0

@ChrisShao似乎問題集中在特定的手機型號三星Focus和奧德賽 – Romasz

0

你要記住,NavigationService.Navigate將執行導航異步。所以當你撥打NavigationService.RemoveBackEntry()時,當前頁面可能還沒有在BackStack上。

爲了解決這個問題,在GamePage的OnNavigatedTo調用RemoveBackEntry

+0

我會試試看。不幸的是,它似乎並不是每次都有效,因爲我需要檢查後端堆棧以確保加載頁面位於頂端,然後再移除後端條目。由於OnNavigatedTo當你回到頁面時也會觸發。 – RandomEngy