譬如說我們希望不論身處何處,只要按上一頁的按鈕,都能回到程式主頁,但系統並不知曉程式還有頁面之分,所以會一律跳回Live Title頁面,導致程式結束。
所幸,我們可以藉由改寫回上一頁的行為,來達到符合預期的頁面切換。PhoneGap有提供回上一頁的API,在Android系統上可直接呼叫使用,但並沒有很好的支援Windows Phone 7,因此還是直接修改原始碼會比較具有彈性。簡易流程如下:
1. 我們可利用InvokeScript()容易丟出例外的特性,在任一js檔撰寫一個回上一頁的function:
1 2 3 4 5 6 7 8 9 10 11 12 | // 進行回到上一頁的處理 function goBack() { if ( isStartPageNow() ) { navigator.app.exitApp(); // 以InvokeScript執行此句會造成例外 } else { showPage( START_PAGE ); // 秀出開始頁面 } } |
2. 開啟專案中的CordoveView.xaml.cs,修改page_BackKeyPress():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void page_BackKeyPress( object sender, CancelEventArgs e ) { try { CordovaBrowser.InvokeScript( "goBack", "" ); // 若有例外發生代表正處於開始頁面 e.Cancel = true; // 取消預設回到上一頁的行為 return; } catch ( Exception ex ) { // 代表正處在開始頁面,故不處理繼續執行,以結束程式。 } // ------ 以下程式碼不動 ------ |
3. 重編譯後即可見到效果。
沒有留言:
張貼留言