Android 为什么getter返回null?

Android 为什么getter返回null?,android,kotlin,getter-setter,getter,Android,Kotlin,Getter Setter,Getter,为什么getter为null?我的代码有问题吗 class ClassifyViewModel (): ViewModel() { private var mUri : Uri? = null fun setUri(uri: Uri?){ Log.d("URIVIEWMODEL", uri.toString()) this.mUri = uri Log.d("URIVIEWMODELSET"

为什么getter为null?我的代码有问题吗

class ClassifyViewModel (): ViewModel() {

    private var mUri : Uri? = null

    fun setUri(uri: Uri?){
        Log.d("URIVIEWMODEL", uri.toString())
        this.mUri = uri
        Log.d("URIVIEWMODELSET", this.mUri.toString())
    }

    fun getUri(): Uri?{
        Log.d("URIVIEWMODELGET", this.mUri.toString())
        return this.mUri
    }

}
我想给碎片上的getter打电话如下:

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View {
        setHasOptionsMenu(true)
        binding = FragmentClassifyBinding.inflate(layoutInflater, container, false)

        fragmentClassifyViewModel = ViewModelProvider(this, ViewModelProvider.NewInstanceFactory())
            .get(ClassifyViewModel::class.java)
        Log.d("URIWOIIII", fragmentClassifyViewModel.getUri().toString())

        if(fragmentClassifyViewModel.getUri() != null){
            Log.d("URIMASUKKKK", fragmentClassifyViewModel.getUri().toString())
            Glide.with(this)
                .load(fragmentClassifyViewModel.getUri())
                .apply(
                    RequestOptions().placeholder(R.drawable.ic_baseline_loading)
                        .error(R.drawable.ic_baseline_broken_image)
                )
                .into(binding.classifyImage)
            showImage()
        }else{
            showNoImage()
        }
        return binding.root
    }
这是二传手

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_GALLERY){
        fragmentClassifyViewModel.setUri(data?.data)
    }
}

假设您先设置值,然后以某种方式调用片段,则更改

fragmentClassifyViewModel=ViewModelProvider(这是ViewModelProvider.NewInstanceFactory()).get(ClassifyViewModel::class.java)

fragmentClassifyViewModel=ViewModelProvider(getActivity(),ViewModelProvider.NewInstanceFactory()).get(ClassifyViewModel::class.java)

因此,您的活动和片段共享相同的值

还有其他方法可以做到这一点,