如何保持自定义视图';使用viewmodel mvvm在Android中创建数据?

如何保持自定义视图';使用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

我想从旋转设备上保留我的数据。我想使用ViewModel,而不是使用android:configChanges=“orientation | keyboardHidden”。我怎么做?我想保留的是
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
        )
    }