android-fragments 如何通过按返回按钮移动到主片段

cngwdvgl  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(172)

我创建了一个自定义的导航抽屉使用运动布局,其中我有图像视图,文本视图和导航主机片段(片段容器视图).问题是,当我点击我的导航抽屉中的任何视图,它打开一个片段,但当点击后退按钮,它关闭应用程序.
这是我的mainactivity.kt文件

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val contactus = findViewById<TextView>(R.id.contact_us)
        val drawer = findViewById<ImageView>(R.id.image8)
        val tandc = findViewById<TextView>(R.id.termsandconditions)
        val motionLayout = findViewById<MotionLayout>(R.id.motion_layout)

        contactus.setOnClickListener {

            supportFragmentManager.beginTransaction().apply {
                replace(R.id.fragmentContainerView2, contact_us_fragment())
                commit()

                motionLayout.transitionToStart()

            }
        }
        drawer.setOnClickListener {

            motionLayout.transitionToEnd()
            motionLayout.transitionToStart()
        }
        tandc.setOnClickListener {
            supportFragmentManager.beginTransaction().apply {
                replace(R.id.fragmentContainerView2, TandCFragment())
                commit()

                motionLayout.transitionToStart()

            }
        }
    }
}

如何在按下后退按钮时移动到主片段?

2uluyalo

2uluyalo1#

我相信你必须实现onBackPressed()方法,当用户按下/向后滑动时调用这个方法。

override fun onBackPressed() {
    // Code here to handle going to fragment
}
3okqufwl

3okqufwl2#

你可以将fragment添加到后栈并给予它们id,然后用这个id弹出后栈。

supportFragmentManager.beginTransaction()
    .add(yourFragment);
    .addToBackStack("YourFragmentTag");
    .commit()

然后通过以下方式将堆栈弹出到此片段:

override fun onBackPressed() { 
    getFragmentManager().popBackStack("YourFragmentTag", 0);
 }

相关问题