使用 Kotlin 的片段和活动
Posted
技术标签:
【中文标题】使用 Kotlin 的片段和活动【英文标题】:Fragments and Activities using Kotlin 【发布时间】:2018-06-26 18:07:58 【问题描述】:我有以下两个整数的活动
class ComplexActivity : AppCompatActivity()
var clubs : Int = 0
var diamonds : Int = 0
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_complex)
val fragment = ClubsFragment()
val transaction = supportFragmentManager.beginTransaction()
transaction.replace(R.id.main_frame, fragment)
transaction.commit()
当isScored 为真时,我想从片段ClubsFragment 更改整数俱乐部的值
class ClubsFragment : Fragment(), SeekBar.OnSeekBarChangeListener
private var isScored = false
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
savedInstanceState: Bundle?): View?
// Inflate the layout for this fragment
val v = inflater!!.inflate(R.layout.fragment_clubs, container, false)
v.image_clubs.setOnClickListener
if(isScored)
activity.clubs = 4
我尝试使用 activity.clubs,但它不起作用。如何从片段中访问活动常量。
【问题讨论】:
用伴生对象试试 @MeLine 没有区别 copanioin object var clubs = 0 相当于java中的static @MeLine 但是当我尝试使用 activity.clubs 从片段中访问它时,它没有出现 你试过公开吗? 【参考方案1】:您将创建一个接口,假设为您的 Activity 的FragmentListener
,其中包含类似fun updateClubs(count: Int)
的函数。你的 Activity 应该实现这个接口。
然后,在您的 Fragment 中,添加一个 fragmentListener 属性并覆盖 onAttach(context: Context):
private var fragmentListener: FragmentListener? = null
override fun onAttach(context: Context)
this.listener = context as? FragmentListener
然后,在您的 OnClickListener 中,您可以简单地调用 fragmentListener?.updateClubs(4)
。
【讨论】:
以上是关于使用 Kotlin 的片段和活动的主要内容,如果未能解决你的问题,请参考以下文章