问题描述
我刚开始了学习如何使用Xamarin Studio来使用MVVMCross与Android。我是相当新的Android开发。
I just started out with learning how to use MVVMCross with Android using Xamarin Studio. I am fairly new to Android development.
我移植iOS应用到Android,当我转动我的屏幕我的应用程序崩溃使用整理碎片时。我觉得这个问题只有我做错了什么,但是当我运行附着在样本视频同样的事情发生在示例项目。我得到的错误是没有找到默认的构造函数。
I am porting an iOS app to Android and when I rotate my screen my app crashes when using fragments. I thought the problem was just me doing something wrong but when I run the sample project attached to the sample video the same thing happens. The error i get is " No default constructor found".
示例应用程序在我使用GitHub的:
The Sample app I used at github : https://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/Fragments
有人可以帮我出为什么发生这种情况?
Can someone please help me out to why this is happening ?
推荐答案
一些挖后,我想你是问如何处理旋转 DialogFragment
- 我希望我有这个权利。
After some digging, I "think" you are asking about how to handle rotation for a DialogFragment
- I hope I've got that right.
如果你想在Android中来处理旋转,那么你必须:
If you do want to handle rotation in Android, then you have to:
- 提供默认的构造函数,你必须利用片段标记
- 提供的
Activity.OnCreate
处理一些code,以确保DialogFragment
有其视图模型
发生旋转后设置。
- provide the default constructor and you have to make use of the fragment tag
- provide some code in the
Activity.OnCreate
handler in order to ensure that theDialogFragment
has itsViewModel
set after the rotation occurs.
我刚刚做了这个给你这个承诺提样本 - https://github.com/MvvmCross/MvvmCross-Tutorials/commit/ebe1777ec79ee2607b1b863f6b8b3911c12df53f
I've just done this for the sample you mention in this commit - https://github.com/MvvmCross/MvvmCross-Tutorials/commit/ebe1777ec79ee2607b1b863f6b8b3911c12df53f
请注意,要真正完全支持活动生命周期 - 例如包括加载/保存状态时,应用程序或活动是墓碑 - 那么你也应该更进一步比这 - 应该保存/恢复所有视图和视图模型状态。 MvvmCross确实包含了一些助手本在即时存档
和 ReloadState
视图模型方法 - 但即使这些话完全支持活动生命周期可以是一个相当痛苦(这就是为什么一些应用程序不完全支持它,而是展现出新,而不是显示)
Note that to really fully support the Activity lifecycle - e.g. including loading/saving state when the App or Activity is "tombstoned" - then you should also go further than this - should save/restore all View and ViewModel state. MvvmCross does contain some helpers for this in the SaveState
and ReloadState
ViewModel methods - but even with these then fully supporting the Activity lifecycle can be quite a pain (which is why some apps don't fully support it, but instead show a "new" display instead)
这篇关于MVVMCROSS片段试样与旋转工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!