Chỉ là tôi muốn chỉ cho bạn cách làm những gì đã nói @JafarKhQ trong Kotlin cho những người sử dụng kotlin có thể giúp họ và tiết kiệm thời gian chủ đề:
vì vậy bạn phải tạo một objet đồng hành để tạo chức năng newInstance mới
bạn có thể thiết lập paremter của hàm bất cứ điều gì bạn muốn. sử dụng
val args = Bundle()
bạn có thể thiết lập đối số của bạn.
Bây giờ bạn có thể sử dụng args.putSomthing
để thêm cho bạn các đối số mà bạn đưa ra làm tham số trong hàm newInstance của mình.
putString(key:String,str:String)
để thêm chuỗi chẳng hạn, v.v.
Bây giờ để có được đối số bạn có thể sử dụng
arguments.getSomthing(Key:String)
=> thícharguments.getString("1")
đây là một ví dụ đầy đủ
class IntervModifFragment : DialogFragment(), ModContract.View
{
companion object {
fun newInstance( plom:String,type:String,position: Int):IntervModifFragment {
val fragment =IntervModifFragment()
val args = Bundle()
args.putString( "1",plom)
args.putString("2",type)
args.putInt("3",position)
fragment.arguments = args
return fragment
}
}
...
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
fillSpinerPlom(view,arguments.getString("1"))
fillSpinerType(view, arguments.getString("2"))
confirmer_virme.setOnClickListener({on_confirmClick( arguments.getInt("3"))})
val dateSetListener = object : DatePickerDialog.OnDateSetListener {
override fun onDateSet(view: DatePicker, year: Int, monthOfYear: Int,
dayOfMonth: Int) {
val datep= DateT(year,monthOfYear,dayOfMonth)
updateDateInView(datep.date)
}
}
}
...
}
Bây giờ làm thế nào để tạo hộp thoại của bạn, bạn có thể làm một cái gì đó như thế này trong một lớp khác
val dialog = IntervModifFragment.newInstance(ListInter.list[position].plom,ListInter.list[position].type,position)
như thế này chẳng hạn
class InterListAdapter(private val context: Context, linkedList: LinkedList<InterItem> ) : RecyclerView.Adapter<InterListAdapter.ViewHolder>()
{
...
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
...
holder.btn_update!!.setOnClickListener {
val dialog = IntervModifFragment.newInstance(ListInter.list[position].plom,ListInter.list[position].type,position)
val ft = (context as AppCompatActivity).supportFragmentManager.beginTransaction()
dialog.show(ft, ContentValues.TAG)
}
...
}
..
}