Android Studio不渲染布局



我目前正在开发一款android应用程序,遇到了一个无法自行解决的问题。

引言

我创建了一个新项目;选项卡式活动;作为项目的模板。如您所知,使用此模板创建的项目有两个.xml文件:activity_main.xml(包含AppBarLayoutViewPager2(和fragment_main.xml。它还设置了MainActivity.kt以使选项卡工作,和ui.main.包,其中有3个.kt文件;片段#1";等

我想要什么

我需要应用程序有顶部的动作栏,标题,标志和标签导航。总的来说,我需要有3个不同的选项卡(片段(,它们有自己的布局和逻辑。

我做了什么,发生了什么

因此,我定制了activity_main.xml布局,然后为我希望在应用程序中拥有的一个片段创建了一个新的布局fragment_dashboard.xml
我已经删除了自动生成的代码,并编写了自己的代码。由于我最喜欢的是作为android开发的初学者,我使用谷歌来学习如何将选项卡片段和主活动绑定在一起。我发现了几篇我认为适合我的文章。

在我完成代码后,我想检查我的带有选项卡的自定义操作栏和完成了一半的fragment_dashboard.xml布局在一起的外观。

所以我试着运行这个应用程序,发现了一个问题:当应用程序在模拟手机中启动时,只有一个白色屏幕,没有其他东西。。。(在删除选项卡的自动生成代码之前,它运行时没有任何问题(

我试着做什么

首先,我试着调试MainActivity.kt。我在函数onCreate((的第一行设置了一个断点:

super.onCreate(savedInstanceState, persistentState)

但当我在调试模式下运行应用程序时,调试器不会在这个断点处停止。因此,我得出了一个结论:执行甚至没有到达函数onCreate((

所以,问题是:我做错了什么?我如何修复它,以便能够看到选项卡及其片段

代码

DashboardFragment.kt

class DashboardFragment() : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_dashboard, container, false);
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
Log.i("DashboardFragment","onViewCreated")
super.onViewCreated(view, savedInstanceState)
}
}

ViewPagerFragmentStateAdapter.kt

class ViewPagerFragmentStateAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {
var positionToPageName = mapOf(
0 to "Dashboard"
)
private var _pageNameToFragment = mapOf<String, Fragment>(
"Dashboard" to DashboardFragment()
)

override fun getItemCount(): Int = _pageNameToFragment.size
override fun createFragment(position: Int): Fragment {
val pageName = positionToPageName[position]
val page = _pageNameToFragment[pageName]
return page ?: DashboardFragment() as Fragment
}
}

ViewPagerFragmentStateAdapter.kt

class MainActivity : AppCompatActivity() {
private lateinit var tabLayout: TabLayout
private lateinit var viewPager: ViewPager2
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
setContentView(R.layout.activity_main)
val adapter = ViewPagerFragmentStateAdapter(this)
viewPager = findViewById(R.id.view_pager)
viewPager.adapter = adapter
tabLayout = findViewById(R.id.tabs)
TabLayoutMediator(tabLayout, viewPager) {
tab, position -> tab.text = adapter.positionToPageName[position]
}.attach()
}
}

我试图更改MainActivity.kt中的一些内容。问题似乎只是在onCreate((函数的定义中:

override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)   {
super.onCreate(savedInstanceState, persistentState)

我创建了一个测试项目;选项卡式活动;模板,并注意到在新项目中缺少persistentState参数。所以,我只是把它从我的项目中的定义中删除了,项目开始运行得很好。

现在onCreate((的定义如下:

override fun onCreate(savedInstanceState: Bundle?)   {
super.onCreate(savedInstanceState)

最新更新