爲了提供正確的使用MvvmCross的Android應用程序的後退按鈕行爲,我必須將特定視圖的LaunchMode
修改爲SingleTask
。雖然這可以正常工作,但是當第二次使用這些視圖之一時,ViewModel構造函數和Init方法(與用於將參數從一個視圖傳遞到另一個視圖的類相結合使用)顯然不再被觸發。我認爲這是「設計」或「由Android OS執行」的行爲,當將代碼放置在可能需要在每次顯示視圖(例如RefreshJobList)時需要調用的構造函數/初始方法中時,您只需要注意這些行爲。我順便修復,是一個電話到所需的方法在活動的OnResume
方法,例如:Android活動LaunchMode SingleTask不會觸發MvvmCross ViewModel構造函數或Init方法
((JobDetailViewModel)this.ViewModel).RefreshJobPhotos();
是否有「更好的方式」?
感謝斯圖爾特。使用SingleTask是我可以創建後退按鈕的正確行爲的唯一方式,但這不會導致應用程序的導航不熟悉。這只是一個典型的帶添加/更新/刪除記錄的列表屏幕,用於顯示詳細信息屏幕。因此,無論何時在詳細信息屏幕上,點擊後退按鈕2次都會關閉應用程序,而不是返回列表和詳細信息屏幕的所有實例。 – Graham