我正在開發這個應用程式,我已經創建了登錄和注冊片段以及一個主要活動。我想在應用程式啟動后首先顯示登錄片段,但我一直遇到此錯誤并且應用程式崩潰:
UnsupportedOperationException: Cannot add action 2131362356 to Destination(/mainActivity) label=MainActivity class=MainActivity as it does not support actions, indicating that it is a terminal destination in your navigation graph and will never trigger actions.
這是我的 main.kt
class MainActivity :AppCompatActivity (){
override fun onCreate(savedInstanceState: Bundle? ) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main);
supportActionBar?.hide()
val navController = findNavController(this,R.id.nav_host_fragment)
navController.navigate(R.id.loginFragment)
}
和我的導航檔案
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/navigation"
app:startDestination="@id/mainActivity">
<fragment
android:id="@ id/loginFragment"
android:name="com.exa.activities.login.LoginFragment"
android:label="login_fragment"
tools:layout="@layout/login_fragment" >
<action
android:id="@ id/action_loginFragment_to_registrationFragment"
app:destination="@id/registrationFragment" />
</fragment>
<activity
android:id="@ id/mainActivity"
android:name="com.exa.MainActivity"
android:label="MainActivity" >
<action
android:id="@ id/action_main_to_loginFragment"
app:destination="@id/loginFragment"
/>
</activity>
我已經嘗試了一些基礎知識,例如失效快取/重新啟動以及檢查應用程式的名稱和啟動活動,但沒有任何改變。我想首先顯示 LoginFragment,然后在用戶登錄時顯示其他螢屏。
uj5u.com熱心網友回復:
從導航圖中洗掉所有活動標簽。將 app:startDestination="@id/mainActivity"更改為app:startDestination="@id/loginFragment"
uj5u.com熱心網友回復:
從檔案:
注意:導航組件是為具有多個片段目的地的一個主要活動的應用程式設計的。主要活動與導航圖相關聯,并包含負責根據需要交換目的地的 NavHostFragment。在具有多個活動目的地的應用程式中,每個活動都有自己的導航圖。
這個想法是你有一個活動,它是一個NavHost,它充當一個容器。目的地都是Fragments,并被交換進出容器以“導航”通過應用程式。由于您嘗試將 anActivity作為導航圖中的目的地,我假設這是您的問題 - 您的目的地必須是片段(包括您的startDestination)。
此外,由于您正在執行登錄操作,因此有一個關于處理該確切用例的教程:https : //developer.android.com/guide/navigation/navigation-conditional
請記住,您startDestination基本上位于 backstack 的底部,并且無法彈出 - 這是用戶退出應用程式后看到的最后一件事(如果它自動將它們轉發到另一個片段,他們將不會看到)不能退出)。如果您希望登錄螢屏成為他們看到的第一件事,請記住一些事情(如果您要通過自動導航到其他地方來處理他們已經登錄的情況)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/357961.html
標籤:安卓 科特林 android-fragments 导航 android-mvvm
