应用启动后Layout短暂显示随即消失,Kotlin新手求故障原因
Android布局短暂显示后消失问题解决
你的核心问题出在布局文件的错误嵌套上:你在一个布局里直接添加了与该布局绑定的同一个Fragment。
看你的布局代码,tools:context指向了CityFragment,同时你又在LinearLayout里嵌套了一个<fragment>标签,指定的也是CityFragment。这种重复嵌套会导致Fragment生命周期异常,或者你的Activity代码中后续的Fragment操作(比如替换)直接覆盖了当前布局,最终出现布局显示一秒就消失的情况。
两种解决方案
方案1:如果这是Activity的布局文件
直接删除里面的<fragment>标签,把LinearLayout改成Fragment容器,然后在Activity代码中手动添加Fragment:
修改后的布局代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="univ.master.kotlin.weather.city.CityFragment"> </LinearLayout>
对应的Activity Kotlin代码:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.你的布局文件名) // 避免屏幕旋转时重复添加Fragment if (savedInstanceState == null) { supportFragmentManager.beginTransaction() .add(R.id.fragment_container, CityFragment()) .commit() } }
方案2:如果这是CityFragment的布局文件
完全不需要嵌套<fragment>标签,直接写Fragment的UI元素就行:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="univ.master.kotlin.weather.city.CityFragment"> <!-- 这里放Fragment的具体UI,比如TextView、列表等 --> </LinearLayout>
问题截图
- 启动时短暂显示的布局:

- 布局消失后的界面:

内容的提问来源于stack exchange,提问作者goujon
相关产品推荐
相关产品推荐

