You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

应用启动后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:05:14