簡體   English   中英

完成並刪除片段,然后返回MainActivity

[英]Finishing and removing fragment and going back to the MainActivity

Android Studio 3.4

我有一個簡單的股票預測應用程序,該應用程序使用一個名為ForecastActivity的活動和三個名為LoadingFragmentForecastFragmentRetryFragment

RetryFragment將首先使用以下代碼添加

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

我在RetryFragment中有一個按鈕,它將再次啟動ForecastActivity

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        btnRetry.setOnClickListener {
            startActivity(Intent(activity, ForecastActivity::class.java))
        }
    }

然后, LoadingFragment將開始在ForecastActvity使用此代碼

 private fun startLoadingFragment() {
        fragmentManager?.let {
            val fragmentTransaction = it.beginTransaction()
            fragmentTransaction.replace(R.id.forecastActivityContainer, LoadingFragment(), "LoadingFragment")
            fragmentTransaction.commit()
        }
    }

然后,在加載完成后,ForecatActivity將啟動ForecastFragment

private fun startForecastFragment() {
        fragmentManager?.let {
            val fragmentTransaction = it.beginTransaction()
            fragmentTransaction.replace(R.id.forecastActivityContainer, RetryFragment(), "ForecastFragment")
            fragmentTransaction.commit()
        }

在我的ForecastActivity我試圖從后台刪除片段,基本上,我只是想從這里完成應用程序。 但是,由於我沒有向后堆棧添加任何內容,因此我不希望計數大於零。 但是,我想知道如何結束該應用程序並阻止RetryFragment再次顯示?

override fun onBackPressed() {
        fragmentManager?.let {
            if(it.backStackEntryCount > 0) {

                it.popBackStackImmediate()
            }
            else {
                super.onBackPressed()
            }
        }
    }

但是,當我在ForecastFragment上單擊后退時,我希望應用程序完成。 但是,將顯示RetryFragment ,然后我必須再次單擊“后退”按鈕以結束該應用程序。

RetryFragment這樣做有什么問題RetryFragment基本上,我只想從RetryFragment回到ForecastActivity重新開始。 startActivity(Intent(activity, ForecastActivity::class.java))

非常感謝您的任何建議。

我認為您的問題是您要從RetryFragment重新啟動ForecastActivity 如果您重組代碼以使RetryFragment可以在ForecastActivity觸發重試功能,則只需將RetryFragment替換為下一個適當的片段,而不用調用startActivity()創建新的ForecastActivity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM