У меня есть Fragment
с 2 ArrayList
s, содержащими Strings
, которые я хотел бы передать из Fragment
, чтобы показать некоторую информацию в DialogFragment
. Однако в настоящее время я заблудился относительно того, какой код я должен использовать для достижения этой цели. Я попытался добавить private val myListTitles: ArrayList<String>, private val myListDescriptions: ArrayList<String>
в конструктор класса фрагмента, но это не сработало. Как правильно реализовать цикл for
и получить положение каждого элемента вместо жесткого кодирования каждого элемента 1 на 1?
Фрагмент класса
class MyFragment : androidx.fragment.app.Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.my_fragment, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
val myListTitles = ArrayList<String>()
myListTitles.add("Tab A")
myListTitles.add("Tab B")
myListTitles.add("Tab C")
val myListDescriptions = ArrayList<String>()
myListDescriptions.add("Description A")
myListDescriptions.add("Description B")
myListDescriptions.add("Description C")
super.onActivityCreated(savedInstanceState)
}
}
Класс DialogFragment
class TabbedDialog : DialogFragment(private val myListTitles: ArrayList<String>, private val myListDescriptions: ArrayList<String>) {
lateinit var customView: View
private var myListTitles = myList.toMutableList()
private var myListDescriptions = myList.toMutableList()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return customView
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val b = AlertDialog.Builder(activity)
.setTitle("Dialog Title")
.setPositiveButton("OK") { dialog, _ -> dialog.dismiss() }
customView = activity!!.layoutInflater.inflate(R.layout.fragment_dialog, null)
val tabLayout = customView.findViewById<TabLayout>(R.id.mTabLayout)
val viewPager = customView.findViewById<ViewPager>(R.id.mViewPager)
val adapter = TabbedDialogAdapter(childFragmentManager)
adapter.addFragment("Tab A", TabbedDialogFragment.createInstance("Description A"))
adapter.addFragment("Tab B", TabbedDialogFragment.createInstance("Description B"))
adapter.addFragment("Tab C", TabbedDialogFragment.createInstance("Description C"))
val adapter = TabbedDialogAdapter(childFragmentManager)
for (item in myList) {
// ¿What goes here?
// My guess
// adapter.addFragment(myListTitles[position], TabbedDialogFragment.createInstance(myListDescriptions[position]))
}
viewPager.adapter = adapter
tabLayout.setupWithViewPager(viewPager)
b.setView(customView)
return b.create()
}
}