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

Android 在片段中单击按钮时通知活动,android,Android,我有一项活动: class MainActivity:AppCompatActivity(){ 重写创建时的乐趣(savedInstanceState:Bundle?){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var fragment=WheelFragment.newInstance(“a”、“b”) supportFragmentManager.beginTransaction().

我有一项活动:

class MainActivity:AppCompatActivity(){
重写创建时的乐趣(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-Fragment:Fragment(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
val视图:视图=充气机。充气(R.layout.fragment_车轮,容器,假)
val buttonNextWheel1=视图.findViewById(R.id.buttonNextWheel)
buttonNextWheel1.setOnClickListener{
Log.d(“DTAG”,“在这里发送一些数据”)
}
返回视图
}
}

您可以从片段中触发要在活动内部执行的函数,如下所示:

 (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
    }
}
class-Fragment:Fragment(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
}
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
val视图:视图=充气机。充气(R.layout.fragment_车轮,容器,假)
val buttonNextWheel1=视图.findViewById(R.id.buttonNextWheel)
buttonNextWheel1.setOnClickListener{
Log.d(“DTAG”,“在这里发送一些数据”)
(活动作为主活动)。剂量测定法()
}
返回视图
}
}

将LiveData与共享的viewmodel或implement界面一起使用。