微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 getter 返回 null?

如何解决为什么 getter 返回 null?

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

s = "cake: dessert,kale: vegetable \n carrots: vegetable \n pears: fruit \n peaches: fruit \n peaches: fruit"
lines = s.split("\n")

我想像这样在片段上调用吸气剂:

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
    }

}

这是二传手

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
    }

解决方法

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

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

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

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

还有其他方法可以做到这一点, please check android developers link

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。