单击片段中的按钮时通知活动



我有一个活动:

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var fragment = WheelFragment.newInstance("a", "b")
supportFragmentManager.beginTransaction().replace(R.id.mainFrame, fragment).commit()
}

现在,在片段中,我希望通知活动关于按钮点击并发送数据。

class WheelFragment : Fragment() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.fragment_wheel, container, false)
val buttonNextWheel1 = view.findViewById<View>(R.id.buttonNextWheel)
buttonNextWheel1.setOnClickListener {
Log.d("DTAG", "Send some data here")
}
return view
}
}

您可以在Fragment中触发要在Activity中执行的函数,如下所示:

(activity as MainActivity).doSomeThing()

活动

class MainActivity : AppCompatActivity() {
val TAG = "yourTag"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}


public fun doSomeThing() {
Log.i(TAG, "doSomeThing: ")
}
}

碎片

class WheelFragment  : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.fragment_wheel, container, false)
val buttonNextWheel1 = view.findViewById<View>(R.id.buttonNextWheel)
buttonNextWheel1.setOnClickListener {
Log.d("DTAG", "Send some data here")
(activity as MainActivity).doSomeThing()
}
return view
}
}

最新更新