我的活动包含一个图像视图和一个按钮,当单击按钮时,图像视图内的图像被更改(工作正常)。
但是当屏幕方向改变时,图像视图内的图像将丢失(因为活动被重新创建)。
我在一些帖子中读到,与onSaveInstanceState相比,ViewModel能够在方向上存活,并且可以存储大量数据(位图)。
还有许多其他选项可以检索相同的图像,但我想使用ViewModel来获取相同的图像,而不会受到方向更改的影响。
那么,如何使用ViewModel获得相同的图像?
谢谢。
您的ViewModel应该有一个方法changeImage
,它可以更改ViewModel的内部状态。您必须以某种方式表明有关此更改的活动。为此目的,最好使用val imageId = MutableLiveData<Int>()
。
changeImage
改变了这个值。在“活动”中,您可以在更改imageId时订阅更改并应用新图像。