Android 纺纱机;试图通过适配器从片段添加项目时,ViewPager2显示为空

Android 纺纱机;试图通过适配器从片段添加项目时,ViewPager2显示为空,android,kotlin,android-viewpager,android-spinner,android-viewpager2,Android,Kotlin,Android Viewpager,Android Spinner,Android Viewpager2,以前我使用TabLayout和ViewPager1来显示对话框片段中的内容,但现在我想使用Spinner和ViewPager2。当我使用与微调器相关的代码时,它会导致应用程序崩溃,微调器显示为空白,这让我感到困惑。有人知道为什么我的微调器没有显示任何项目+ViewPager2没有显示任何片段吗?以及如何接收此信息 问题似乎出在这段代码上,logcat指出: val arrayAdapter = ArrayAdapter(view!!.context, R.layout.my_spinnerIte

以前我使用
TabLayout
ViewPager1
来显示对话框片段中的内容,但现在我想使用
Spinner
ViewPager2
。当我使用与
微调器相关的代码时,它会导致应用程序崩溃,微调器显示为空白,这让我感到困惑。有人知道为什么我的微调器没有显示任何项目+
ViewPager2
没有显示任何
片段
吗?以及如何接收此信息

问题似乎出在这段代码上,logcat指出:

val arrayAdapter = ArrayAdapter(view!!.context, R.layout.my_spinnerItem, myTabTitles)
arrayAdapter.setDropDownViewResource(R.layout.my_spinnerItem)
mSpinner.adapter = arrayAdapter

XML(我以前用过的)


XML(我想改用它)


Kotlin(我以前用过的)

类选项卡对话框(
private val myTitle:String,
私人val myTabTitles:ArrayList,
私有val myTabDescriptions:ArrayList
):DialogFragment(){
私有lateinit var customView:视图
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
返回自定义视图
}
重写FunonCreateDialog(savedInstanceState:Bundle?:对话框){
val b=AlertDialog.Builder(活动)
.setTitle(myTitle)
.setPositiveButton(getString(android.R.string.ok)){dialog,->dialog.disease()}
customView=activity!!.layoutInflater.flate(R.layout.fragment\u对话框,空)
val tabLayout=customView.myTabLayout
val viewPager=customView.myViewPager
val适配器=MyViewPagerAdapter(子片段管理器)
myTabTitles.ForeAchined{索引,项->
adapter.addFragment(
项目,,
FragmentDialogContent.createInstance(myTabDescriptions[索引])
)
}
viewPager.adapter=适配器
tabLayout.setupWithViewPager(viewPager)
b、 setView(自定义视图)
返回b.create()
}
}
MyViewPagerAdapter类

class MyViewPagerAdapter(manager: FragmentManager) :
    FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
    private val titleList: MutableList<String> = ArrayList()
    private val fragmentList: MutableList<Fragment> = ArrayList()

    override fun getItem(position: Int): Fragment {
        return fragmentList[position]
    }

    override fun getCount(): Int {
        return fragmentList.size
    }

    fun addFragment(title: String, fragment: Fragment) {
        titleList.add(title)
        fragmentList.add(fragment)
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return titleList[position]
    }
}
class MyFragment : androidx.fragment.app.Fragment() {
    private lateinit var mRecyclerView: RecyclerView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.my_layout, container, false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        val v = view

        mRecyclerView = v!!.mRecyclerViewSansToolbar
        mRecyclerView.layoutManager = LinearLayoutManager(activity)

        val listFacilities = ArrayList<Item>()

        val myDialogTitle = "Hello World"

        val myTabTitles = ArrayList<String>()
        myTabTitles.add("Tab 1")
        myTabTitles.add("Tab 2")
        myTabTitles.add("Tab 3")
        myTabTitles.add("Tab 4")
        myDialogTabTitles.add("Tab 5")

        val myTabDescriptions = ArrayList<String>()
        myTabDescriptions.add("Description 1")
        myTabDescriptions.add("Description 2")
        myTabDescriptions.add("Description 3")
        myTabDescriptions.add("Description 4")
        myDialogTabDescriptions.add("Description 5")

        super.onActivityCreated(savedInstanceState)
    }
}
类MyViewPagerAdapter(管理器:碎片管理器):
FragmentPagerAdapter(经理、行为\仅恢复\当前\片段){
private val titleList:MutableList=ArrayList()
private val fragmentList:MutableList=ArrayList()
覆盖趣味getItem(位置:Int):片段{
返回碎片列表[位置]
}
重写fun getCount():Int{
返回fragmentList.size
}
乐趣添加片段(标题:字符串,片段:片段){
标题列表。添加(标题)
碎片列表。添加(碎片)
}
覆盖有趣的getPageTitle(位置:Int):字符序列{
返回标题列表[位置]
}
}
Kotlin(我尝试过的)

类选项卡对话框1(
private val myTitle:String,
私人val myTabTitles:ArrayList,
私有val myTabDescriptions:ArrayList
):DialogFragment(){
私有lateinit var customView:视图
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
返回自定义视图
}
重写FunonCreateDialog(savedInstanceState:Bundle?:对话框){
val b=AlertDialog.Builder(活动)
.setIcon(R.drawable.ic_夜间)
.setTitle(myTitle)
.setPositiveButton(getString(android.R.string.ok)){dialog,->dialog.disease()}
customView=activity!!.layoutInflater.flate(R.layout.fragment\u对话框\u 1,空)
val mSpinner=customView.mSpinnerV2
val mViewPager=customView.mViewPagerV2
val mAdapter=MyViewPagerAdapter(儿童片段管理器)
val arrayAdapter=arrayAdapter(视图!!.context,R.layout.my_spinnerItem,myTabTitles)
arrayAdapter.setDropDownViewResource(R.layout.my_spinnerItem)
mSpinner.adapter=arrayAdapter
myTabTitles.ForeAchined{索引,项->
mAdapter.addFragment(
项目,,
FragmentDialogContent.createInstance(myTabDescriptions[索引])
)
}
mViewPager.orientation=ViewPager2.orientation\u水平
b、 setView(自定义视图)
返回b.create()
}
}
片段类

class MyViewPagerAdapter(manager: FragmentManager) :
    FragmentPagerAdapter(manager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
    private val titleList: MutableList<String> = ArrayList()
    private val fragmentList: MutableList<Fragment> = ArrayList()

    override fun getItem(position: Int): Fragment {
        return fragmentList[position]
    }

    override fun getCount(): Int {
        return fragmentList.size
    }

    fun addFragment(title: String, fragment: Fragment) {
        titleList.add(title)
        fragmentList.add(fragment)
    }

    override fun getPageTitle(position: Int): CharSequence? {
        return titleList[position]
    }
}
class MyFragment : androidx.fragment.app.Fragment() {
    private lateinit var mRecyclerView: RecyclerView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.my_layout, container, false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        val v = view

        mRecyclerView = v!!.mRecyclerViewSansToolbar
        mRecyclerView.layoutManager = LinearLayoutManager(activity)

        val listFacilities = ArrayList<Item>()

        val myDialogTitle = "Hello World"

        val myTabTitles = ArrayList<String>()
        myTabTitles.add("Tab 1")
        myTabTitles.add("Tab 2")
        myTabTitles.add("Tab 3")
        myTabTitles.add("Tab 4")
        myDialogTabTitles.add("Tab 5")

        val myTabDescriptions = ArrayList<String>()
        myTabDescriptions.add("Description 1")
        myTabDescriptions.add("Description 2")
        myTabDescriptions.add("Description 3")
        myTabDescriptions.add("Description 4")
        myDialogTabDescriptions.add("Description 5")

        super.onActivityCreated(savedInstanceState)
    }
}
classmyfragment:androidx.fragment.app.fragment(){
私有lateinit var mRecyclerView:RecyclerView
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
返回充气机。充气(R.layout.my_布局,容器,假)
}
覆盖活动创建的乐趣(savedInstanceState:Bundle?){
val v=视图
mRecyclerView=v!!.mRecyclerViewSansToolbar
mRecyclerView.layoutManager=LinearLayoutManager(活动)
val listFacilities=ArrayList()
val myDialogTitle=“你好,世界”
val myTabTitles=ArrayList()
myTabTitles.add(“表1”)
myTabTitles.add(“表2”)
myTabTitles.add(“表3”)
myTabTitles.add(“表4”)
myDialogTabTitles.add(“表5”)
val myTabDescriptions=ArrayList()
myTabDescriptions.add(“说明1”)
myTabDescriptions.add(“说明2”)
myTabDescriptions.add(“说明3”)
myTabDescriptions.add(“说明4”)
myDialogTabDescriptions.add(“说明5”)
super.onActivityCreated(savedInstanceState)
}
}
class TabbedDialog1(
    private val myTitle: String,
    private val myTabTitles: ArrayList<String>,
    private val myTabDescriptions: ArrayList<String>
) : DialogFragment() {
    private lateinit var customView: View

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return customView
    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

        val b = AlertDialog.Builder(activity)
            .setIcon(R.drawable.ic_night)
            .setTitle(myTitle)
            .setPositiveButton(getString(android.R.string.ok)) { dialog, _ -> dialog.dismiss() }

        customView = activity!!.layoutInflater.inflate(R.layout.fragment_dialog_1, null)

        val mSpinner = customView.mSpinnerV2
        val mViewPager = customView.mViewPagerV2

        val mAdapter = MyViewPagerAdapter(childFragmentManager)

        val arrayAdapter = ArrayAdapter(view!!.context, R.layout.my_spinnerItem, myTabTitles)
        arrayAdapter.setDropDownViewResource(R.layout.my_spinnerItem)
        mSpinner.adapter = arrayAdapter

        myTabTitles.forEachIndexed { index, item ->
            mAdapter.addFragment(
                item,
                FragmentDialogContent.createInstance(myTabDescriptions[index])
            )
        }


        mViewPager.orientation = ViewPager2.ORIENTATION_HORIZONTAL

        b.setView(customView)
        return b.create()
    }
}
class MyFragment : androidx.fragment.app.Fragment() {
    private lateinit var mRecyclerView: RecyclerView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.my_layout, container, false)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        val v = view

        mRecyclerView = v!!.mRecyclerViewSansToolbar
        mRecyclerView.layoutManager = LinearLayoutManager(activity)

        val listFacilities = ArrayList<Item>()

        val myDialogTitle = "Hello World"

        val myTabTitles = ArrayList<String>()
        myTabTitles.add("Tab 1")
        myTabTitles.add("Tab 2")
        myTabTitles.add("Tab 3")
        myTabTitles.add("Tab 4")
        myDialogTabTitles.add("Tab 5")

        val myTabDescriptions = ArrayList<String>()
        myTabDescriptions.add("Description 1")
        myTabDescriptions.add("Description 2")
        myTabDescriptions.add("Description 3")
        myTabDescriptions.add("Description 4")
        myDialogTabDescriptions.add("Description 5")

        super.onActivityCreated(savedInstanceState)
    }
}