Android 为什么getter返回null?
为什么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"
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)
因此,您的活动和片段共享相同的值
还有其他方法可以做到这一点,