如何保持自定义视图';使用viewmodel mvvm在Android中创建数据?
我想从旋转设备上保留我的数据。我想使用ViewModel,而不是使用android:configChanges=“orientation | keyboardHidden”。我怎么做?我想保留的是如何保持自定义视图';使用viewmodel mvvm在Android中创建数据?,android,android-viewmodel,Android,Android Viewmodel,我想从旋转设备上保留我的数据。我想使用ViewModel,而不是使用android:configChanges=“orientation | keyboardHidden”。我怎么做?我想保留的是mydata\ux、mydata\uy、mydata\ucolor、var radiusarray。 我想从旋转设备上保留我的数据。我想使用ViewModel,而不是使用android:configChanges=“orientation | keyboardHidden”。我怎么做?我想保留的是myd
mydata\ux、mydata\uy、mydata\ucolor、var radiusarray
。
我想从旋转设备上保留我的数据。我想使用ViewModel,而不是使用android:configChanges=“orientation | keyboardHidden”。我怎么做?我想保留的是mydata\ux、mydata\uy、mydata\ucolor、var radiusarray
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding =
DataBindingUtil.setContentView(this, R.layout.activity_main)
val viewModel: MainActivityViewModel by viewModels()
binding.main = viewModel
binding.lifecycleOwner = this
viewModel.myData_x.observe(this, {
binding.pdfView.myData_x = it
})
val listener = View.OnClickListener {
when (it) {
binding.decreaseValue -> MyView.radius -= 2
binding.increaseValue -> MyView.radius += 2
binding.setRed -> MyView.whatColor = 1
binding.setBlue -> MyView.whatColor = 2
binding.setYellow -> MyView.whatColor = 3
binding.setGreen -> MyView.whatColor = 4
binding.setBlack -> MyView.whatColor = 0
}
}
...
}
}
MainActivity.kt
class MainActivityViewModel : ViewModel() {
private val _myData_x = MutableLiveData(IntArray(30000))
val myData_x: LiveData<IntArray>
get() = _myData_x
...
}
MyView.kt
<....MyView
android:id="@+id/paint_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
我终于找到了路
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
myViewViewModel.saveAlldata(
binding.pdfView.myData_x, binding.pdfView.myData_y,
binding.pdfView.myData_color, binding.pdfView.radiusArray, binding.pdfView.dataNumber
)
}
只需使用onsavedinstancestate,我就可以将状态保存到viewmodel。我建议您看看如何生成一个新的状态,过滤您提供的所有代码并不会占用很多人的时间。
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
myViewViewModel.saveAlldata(
binding.pdfView.myData_x, binding.pdfView.myData_y,
binding.pdfView.myData_color, binding.pdfView.radiusArray, binding.pdfView.dataNumber
)
}