我有一个
Fragment
有2个
ArrayList
s包含
Strings
我想从
碎片
在
DialogFragment
. 但是,我现在不知道应该使用什么代码来实现这个目标。我试着加上
private val myListTitles: ArrayList<String>, private val myListDescriptions: ArrayList<String>
到片段类的构造函数,但这不起作用。正确的方法是什么
for
循环并得到每个项目的位置,而不是一个一个地对每个项目进行硬编码?
碎片类
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()
}
}