Android 完成并移除片段,返回主活动
我有一个简单的股票预测应用程序,它使用一个名为ForecastActivity的活动和3个名为Android 完成并移除片段,返回主活动,android,android-fragments,Android,Android Fragments,我有一个简单的股票预测应用程序,它使用一个名为ForecastActivity的活动和3个名为LoadingFragment、ForecastFragment和RetryFragment private fun startLoadingFragment() { fragmentManager?.let { val fragmentTransaction = it.beginTransaction() fragmentTransac
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我使用了您的第一个建议。现在工作。如果你回答这个问题,我会点击作为解决方案