簡體   English   中英

如何在不是 android 中的啟動器活動的活動中按后退按鈕關閉應用程序?

[英]How do I close App on Back button press in an Activity which is not the launcher activity in android?

我的應用程序中有一個登錄活動和家庭活動。 登錄活動是啟動器活動,它檢查用戶是否已經登錄,然后如果用戶已經登錄,則自動將用戶定向到主頁活動。現在當用戶在主頁活動中並按下后退按鈕時,我想要用戶退出應用程序的行為與在啟動器活動上按下后退按鈕時發生的行為相同。 我如何實現這一目標? 我絕對不希望他被帶到登錄活動,因為他已經登錄了。

我現在正在做的是,我添加了“清除頂部”意圖標志,但用戶使用以下內容返回登錄活動:

val intent = Intent(AuthUI.getApplicationContext(), 
         HomeActivity::class.java) 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)

另外,我沒有使用 android 中的導航庫

您可以在啟動 Home Activity 后完成 Login Activity。

startActivity('intent that starts home activity')
finish()

或者您可以在家庭活動中調用finishAffinity()

我猜您將在驗證后使用 Explicit Intent 來啟動 HomeActivity。 因此,您可以在啟動啟動 HomeActivity 的 Intent 后立即在 LoginActivity 上調用完成。

IE

startActivity('intent that starts home activity')
finish()

然后當用戶在 HomeActivity 上按下返回按鈕時,他們將退出應用程序。

你有幾個選擇:

  1. 您可以finish()您的登錄活動,以便將其從活動返回堆棧中刪除。
  2. 您可以為這些屏幕使用片段,而不是在替換片段時將前一個添加到 backStack。
  3. 您可以重寫onBackPressed方法以查看用戶是否仍然登錄,以便您可以將他們路由到正確的活動。
  4. 您可以考慮有一個啟動器活動,它是一個虛擬活動,其onCreate()基於用戶登錄 state 打開登錄活動或主頁活動,因此登錄活動不會打開,以防萬一他已經登錄,但這仍然會遇到同樣的問題,即讓您在進行下一個活動之前finish()此活動。

暫無
暫無

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

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