将数据表单片段发送到 Activity Kotlin

问题描述 投票:0回答:1

我正在构建一个计算器应用程序,其中按钮部分位于片段内部(片段仅属于 main_activity),结果文本视图位于 main_activity 中。 现在任何人都可以告诉按钮点击侦听器的简单过程,如何编写 kotlin 代码,即 当我按下片段内的按钮时,按钮的文本应显示在活动的文本视图中。 帮帮我吧各位... 还有一件事,还告诉我是否可以使用 viewpager2 滑动布局(即 L.Layot)。 帮帮我吧伙计们。

android kotlin android-activity fragment
1个回答
0
投票

您可以通过使用

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

滑动布局
  1. ViewPager2
    添加到您的活动/片段
  2. 创建一个容纳片段的适配器
© www.soinside.com 2019 - 2024. All rights reserved.