Android 完成并移除片段,返回主活动

Android 完成并移除片段,返回主活动,android,android-fragments,Android,Android Fragments,我有一个简单的股票预测应用程序,它使用一个名为ForecastActivity的活动和3个名为LoadingFragment、ForecastFragment和RetryFragment private fun startLoadingFragment() { fragmentManager?.let { val fragmentTransaction = it.beginTransaction() fragmentTransac

我有一个简单的股票预测应用程序,它使用一个名为ForecastActivity的活动和3个名为
LoadingFragment
ForecastFragment
RetryFragment

 private fun startLoadingFragment() {
        fragmentManager?.let {
            val fragmentTransaction = it.beginTransaction()
            fragmentTransaction.replace(R.id.forecastActivityContainer, LoadingFragment(), "LoadingFragment")
            fragmentTransaction.commit()
        }
    }
将首先使用中的以下代码添加
RetryFragment

Android Studio 3.4
我在
RetryFragment
中有一个按钮,它将再次启动
forecastativity

`ForecastActivity`:
 private fun startRetryFragment() {
        fragmentManager?.let {
            val fragmentTransaction = it.beginTransaction()
            fragmentTransaction.replace(R.id.forecastActivityContainer, RetryFragment(), "RetryFragment")
            fragmentTransaction.commit()
        }
    }
然后,
LoadingFragment
将在
forecastativity

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        btnRetry.setOnClickListener {
            startActivity(Intent(activity, ForecastActivity::class.java))
        }
    }
加载完成后,ForecataActivity将启动
ForecastFragment

 private fun startLoadingFragment() {
        fragmentManager?.let {
            val fragmentTransaction = it.beginTransaction()
            fragmentTransaction.replace(R.id.forecastActivityContainer, LoadingFragment(), "LoadingFragment")
            fragmentTransaction.commit()
        }
    }
在我的
ForecastActivity
中,我试图从后台删除片段,基本上,从这里我只想完成应用程序。然而,由于我没有在backback中添加任何内容,我不希望计数大于零。但是,我想知道如何结束应用程序并防止
RetryFragment
再次显示

private fun startForecastFragment() {
        fragmentManager?.let {
            val fragmentTransaction = it.beginTransaction()
            fragmentTransaction.replace(R.id.forecastActivityContainer, RetryFragment(), "ForecastFragment")
            fragmentTransaction.commit()
        }
但是,当我在
ForecastFragment
上单击后退时,我希望应用程序能够完成。但是,将显示
RetryFragment
,然后我必须再次单击后退按钮以结束应用程序

RetryFragment
基本上,我只想从
RetryFragment
返回ForecastActivity重新开始。
startActivity(Intent(activity,forecasactivity::class.java))


非常感谢您的建议。

我想您的问题是您正在从
RetryFragment
再次启动
forecastativity
。如果重新构造代码,使
RetryFragment
可以触发
ForecastActivity
中的重试函数,则可以使用下一个适当的片段替换
RetryFragment
,而不是调用
startActivity()
要创建一个新的
预测活动

我认为您的问题是您正在从
RetryFragment
再次启动
预测活动。如果重新构造代码,使
RetryFragment
可以触发
ForecastActivity
中的重试函数,则可以使用下一个适当的片段替换
RetryFragment
,而不是调用
startActivity()
来创建新的
ForecastActivity
。TL/DR:不要从
RetryFragment
调用
startActivity()
来启动
ForecastActivity
。如果要保留
startActivity()
函数,另一个选项是使
ForecastActivity
成为
singleTop
singleTask
。然后您可以在
活动中的
onNewIntent()
中接收新的
意图
,并从那里重新加载。@bradford2000我使用了您的第一个建议。现在工作。如果你回答这个问题,我会点击作为解决方案