kotlin:分配类数据成员会产生问题



我有两个kotlin文件,一个是recycler_adapter(fragment(,另一个是fragment_B我想把数据发送到fragment_B。

问题:为什么tag4(在getdata((函数内(不打印任何内容?。

搜索了所有可能的查询,但没有找到解决方案。

适配器:

override fun onBindViewHolder(holder: dashboard_viewholder, position: Int) {
val currentitem = sampledata[position]
Glide.with(holder.itemView).load(currentitem.imageResource)
.placeholder(R.drawable.ic_baseline_history_icon)
.into(holder.imageView)

holder.textView.text = currentitem.text1
holder.itemView.setOnClickListener {
service_providers_list().getshared_data(currentitem.text1) //calling function
val appCompatActivity = it.context as AppCompatActivity
appCompatActivity.supportFragmentManager.beginTransaction()
.replace(R.id.Activity_frag_container, service_providers_list())
.addToBackStack(null)
.commit()
}
}

假设currentitem.text1="apple"(字符串类型(。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。片段代码(下图(

class service_providers_list(): Fragment(){
var sdsd = ""
fun getshared_data(text1: String) {
this.sdsd = text1
Log.e("tag1", text1) // this print apple
Log.e("tag2", this.sdsd) //this print apple
Log.e("tag3", sdsd) //this print apple
getdata()
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
getdata()
service_list_recycler = service_provider_recycle_view.findViewById(R.id.service_provider_recycle_view)
service_provider_recycle_view.layoutManager = LinearLayoutManager(this.requireContext())
service_provider_recycle_view.setHasFixedSize(true)
}
fun getdata() {

Log.e("tag4", sdsd) //this print nothing.   why??
{.............code for database............}
}
}

这只是代码中的一种简单方法,但不是最好的。

setOnClickListener {
val yourFragment = service_providers_list()
yourFragment.arguments = Bundle().apply {
putString("YOUR_KEY",currentitem.text1)
}
val appCompatActivity = it.context as AppCompatActivity
appCompatActivity.supportFragmentManager.beginTransaction()
.replace(R.id.Activity_frag_container, yourFragment)
.addToBackStack(null)
.commit()

和在service_providers_list

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
sdsd = requireArguments().getString("YOUR_KEY")
//...
}

你可以在下面的帖子中学习到在你的情况下的好方法。或者互联网上有很多好帖子。

https://medium.com/androiddevelopers/for-my-next-trick-i-will-write-about-onclick-45e0a6881c8a

最新更新