我正在构建一个计算器应用程序,其中按钮部分位于片段内部(片段仅属于 main_activity),结果文本视图位于 main_activity 中。 现在任何人都可以告诉按钮点击侦听器的简单过程,如何编写 kotlin 代码,即 当我按下片段内的按钮时,按钮的文本应显示在活动的文本视图中。 帮帮我吧各位... 还有一件事,还告诉我是否可以使用 viewpager2 滑动布局(即 L.Layot)。 帮帮我吧伙计们。
您可以通过使用
interface
在 Activity
和 Fragment
之间进行通信来实现此目的。
1-在您的
Fragment
中创建一个界面
class ButtonFragment : Fragment() {
private var listener: OnButtonClickListener? = null
private var bidding: FragmentButtonBinding? = null
interface OnButtonClickListener {
fun onButtonClicked(text: String)
}
override fun onAttach(context: Context) {
super.onAttach(context)
if (context is OnButtonClickListener) {
listener = context
} else {
throw RuntimeException("$context must implement OnButtonClickListener")
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
bidding = FragmentButtonBinding.inflate(inflater, container, false)
binding.button.setOnClickListener {
listener?.onButtonClicked(binding.button.text.toString())
}
return binding?.root
}
override fun onDetach() {
super.onDetach()
listener = null
}
}
2- 在活动中聆听
class MainActivity : AppCompatActivity(), ButtonFragment.OnButtonClickListener {
private var resultTextView: TextView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
resultTextView = findViewById(R.id.resultText)
val fragment = ButtonFragment()
supportFragmentManager.beginTransaction()
.replace(R.id.fragment_container, fragment) // fragment container is the frame layout
.commit()
}
override fun onButtonClicked(text: String) {
// update textview with the button text
resultTextView?.text = text
}
}
是的,您可以使用
ViewPager2
滑动布局
ViewPager2
添加到您的活动/片段