我刚开始学习如何使用 Xamarin Studio 将 MVVMCross 与 Android 结合使用。我是 Android 开发的新手。
我正在将一个 iOS 应用程序移植到 Android,当我旋转屏幕时,我的应用程序在使用 fragment 时崩溃了。我认为问题只是我做错了什么,但是当我运行示例视频附带的示例项目时,同样的事情发生了。我得到的错误是“没有找到默认构造函数”。
我在 github 上使用的示例应用程序:https://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/Fragments
有人可以帮我弄清楚为什么会这样吗?
最佳答案
经过一些挖掘,我“认为”您是在询问如何处理 DialogFragment
的旋转 - 我希望我没弄错。
如果你确实想在 Android 中处理旋转,那么你必须:
- 提供默认构造函数,你必须使用 fragment 标签
- 在
Activity.OnCreate
处理程序中提供一些代码,以确保DialogFragment
在旋转发生后设置其ViewModel
。
我刚刚为您在此提交中提到的示例完成了此操作 - https://github.com/MvvmCross/MvvmCross-Tutorials/commit/ebe1777ec79ee2607b1b863f6b8b3911c12df53f
请注意,要真正完全支持 Activity 生命周期 - 例如包括当 App 或 Activity 被“逻辑删除”时加载/保存状态——那么你还应该比这更进一步——应该保存/恢复所有 View 和 ViewModel 状态。 MvvmCross 确实在 SaveState
和 ReloadState
ViewModel 方法中包含了一些帮助程序——但即使有了这些,完全支持 Activity 生命周期也可能会很痛苦(这就是为什么一些应用程序不完全支持它,而是显示"new"显示)
关于android - MVVMCROSS fragment 示例不适用于旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19792461/