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)
}
}