我有些困惑,不知道如何制作一个简单的DialogFragment来编辑一个复杂对象,比如一个人,包括名字、姓氏和一系列email地址(每个地址都由枚举值(工作,家庭等)和地址组成)。
首先,我应该如何正确地将Person对象传递给DialogFragment? 我目前的解决方案是创建一个setPerson(Person person)方法,在我的DialogFragment创建后但dialog.show()之前调用它。这种方法可以工作,但是当配置更改发生时(用户旋转屏幕),DialogFragment会重新创建,并且对于Person对象的引用为null。我知道可以使用onSaveInstanceState保存实例,但对象很复杂并且昂贵,这种方式保存大型对象似乎是浪费的。
我还尝试了在使用我的对话框的活动中禁用配置更改,这样就可以解决问题,但是我希望对话框是可重用的,要求所有使用它的活动禁用配置更改似乎是错误的。
第三个选项是将Person 的引用保存在静态变量中,但是再次强调,我希望对话框是可重用的,并且能够支持多个实例。
其他人是如何处理他们昂贵且复杂的对象以便在可重用的对话框中使用呢?
首先,我应该如何正确地将Person对象传递给DialogFragment? 我目前的解决方案是创建一个setPerson(Person person)方法,在我的DialogFragment创建后但dialog.show()之前调用它。这种方法可以工作,但是当配置更改发生时(用户旋转屏幕),DialogFragment会重新创建,并且对于Person对象的引用为null。我知道可以使用onSaveInstanceState保存实例,但对象很复杂并且昂贵,这种方式保存大型对象似乎是浪费的。
我还尝试了在使用我的对话框的活动中禁用配置更改,这样就可以解决问题,但是我希望对话框是可重用的,要求所有使用它的活动禁用配置更改似乎是错误的。
第三个选项是将Person 的引用保存在静态变量中,但是再次强调,我希望对话框是可重用的,并且能够支持多个实例。
其他人是如何处理他们昂贵且复杂的对象以便在可重用的对话框中使用呢?