簡體   English   中英

通過 bundle kotlin 在兩個分片之間傳遞數據

[英]Pass data between two fragments by bundle kotlin

我有兩個片段,並且想在按下 Bundle 的第一個片段(SearchFragment)的按鈕時打開第二個片段(WordFragment)。 但是 Fragment 顯示默認數據而不是傳遞的數據。

第一個片段中的 ClickListener:

 searchDefAdapter = SearchDefAdapter(
            object : SearchDefAdapter.OnItemClickListener {
                override fun onItemClick(position: Int) {
                    val bundle = Bundle()
                    val arr = arrayOf("word", "слово", "I give you my word")
                    bundle.putStringArray(INFO_BUNDLE_ID, arr)
                    val wordFragment = WordFragment()
                    wordFragment.arguments = bundle
                    parentFragmentManager.beginTransaction().apply {
                        replace(R.id.searchFragment, WordFragment())
                        commit()
                    }
                }
            },
            object : SearchDefAdapter.OnItemClickListener {
                override fun onItemClick(position: Int) {
                    //viewModel.saveWord(position)
                }
            }
        )

第二個片段:

class WordFragment : Fragment() {
    private var _binding: FragmentWordBinding? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = FragmentWordBinding.inflate(inflater, container, false)
        val view = binding.root

        arguments?.let {
            val translation = it.getStringArray(INFO_BUNDLE_ID)
            if (translation != null){
                binding.wordTitleTv.text = translation[0]
                binding.translationTv.text = translation[1]
                binding.exampleTv.text = translation[2]
            }
        }

        return view
    }

    override fun onDestroyView() {
        _binding = null
        super.onDestroyView()
    }
}

這是因為您在這里創建了新的 WordFragment replace(R.id.searchFragment, WordFragment())而不是將您添加的包放入其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM