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

Android中启动第二个Activity时Fragment自动加载的问题求助

问题分析与解决方案

问题原因

  1. Fragment自动加载的核心原因:你在FragmentContainerView中设置了android:name="com.example.myapplication.FirstFragment"属性,这个属性会让Android系统在第二个Activity创建时,自动实例化并加载指定的Fragment,导致一启动Activity就加载了Fragment,不符合点击按钮才加载的需求。
  2. 代码逻辑错误:你写的onClick方法里调用了setContentView(R.layout.activity_choose_lab),这是错误的——Activity的布局应该在onCreate方法中设置,重复调用会导致布局重置,可能引发其他异常。

解决方案

1. 修改Fragment容器的XML代码

移除FragmentContainerView的android:name属性,让系统不再自动加载Fragment:

<androidx.fragment.app.FragmentContainerView
        android:id="@+id/FirstFragmentContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

2. 修正第二个Activity的代码

在Activity的onCreate方法中完成布局设置和按钮点击事件绑定,删除原来的onClick方法:

class ChooseLab : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_choose_lab)
        
        val callFragmentFirst = findViewById<Button>(R.id.call_fragment_first)
        callFragmentFirst.setOnClickListener {
            val fragmentTransaction = supportFragmentManager.beginTransaction()
            fragmentTransaction.replace(R.id.FirstFragmentContainer, FirstFragment())
            fragmentTransaction.commit()
        }
    }
}

注意事项

  • 确保布局文件activity_choose_lab中存在call_fragment_first按钮,且不要在XML中设置android:onClick="onClick"(避免和旧方法冲突)。
  • 原来的onClick方法可以直接删除,避免不必要的布局重置操作。

内容的提问来源于stack exchange,提问作者Dmitriy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:43:10