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界面一起使用。