簡體   English   中英

如何將數據從主機片段傳遞到 kotlin 中的對話框片段?

[英]How to can I pass data from a host fragment to dialog fragment in kotlin?

我有一個 RecylcerView,單擊該視圖應該將用戶帶到一個對話框片段,用戶將能夠在其中編輯視圖的內容。 因此,我需要將數據作為數據 class DressMeasurementModel 從主機片段傳遞到對話片段。

我怎樣才能做到這一點?

    // This property is only valid between onCreateView and onDestroyView.
    private val binding get() = _binding!!
    private lateinit var addMeasurementFab: FloatingActionButton
    private lateinit var display:TextView
    private lateinit var myAdapter: AddMeasurementAdapter
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        _binding = MeasurementsFragmentBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)


        val recyclerView = binding.measurementsFragmentRecyclerView
        myAdapter = AddMeasurementAdapter(currentList,this@MeasurementsFragment, this@MeasurementsFragment)
        recyclerView.adapter = myAdapter
        recyclerView.layoutManager = StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)
    }

    override fun onItemClicked1(dressMeasurementModel: DressMeasurementModel) {
        val data = DressMeasurementModel(dressMeasurementModel.measurementName, dressMeasurementModel.measurement)
        val bundle = bundleOf("editData" to data)
        setFragmentResult("editData_key", bundle)
        EditMeasurementDialogFragment().show(childFragmentManager, "Dialog tag")
    }
}

add this into your dialog fragment

    companion object {

    private const val ITEMS = "data"

    fun newInstance(data : DressMeasurementModel): EditMeasurementDialogFragment= EditMeasurementDialogFragment().apply {
        arguments = Bundle().apply {
            putString(ITEMS, Gson().toJson(data))
        }
    }
}

並從您的片段中調用此片段對話框

     val dialog = EditMeasurementDialogFragment.newInstance(items)
     dialog.show(childFragmentManager, "dialog")

// 在開始或創建時將參數放入對話框片段

  val data = argument?.getString(ITEMS)
  val model = Gson().fromJson(data,DressMeasurementModel::class.java)

// 或者您可以簡單地將 model 或數據傳遞到主要結構中,例如

     class EditMeasurementDialogFragment(data: DressMeasurementModel)

讓您的 Dialog class 帶有您想要數據的構造函數:

class EditMeasurementDialogFragment(data: DressMeasurementModel)

您可以在構造函數中傳遞它,如下所示:

 val data = DressMeasurementModel(dressMeasurementModel.measurementName, dressMeasurementModel.measurement)
EditMeasurementDialogFragment(data).show(childFragmentManager, "Dialog tag")

暫無
暫無

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

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