首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将操作添加到Mainactivity,因为它不支持操作

无法将操作添加到Mainactivity,因为它不支持操作
EN

Stack Overflow用户
提问于 2021-11-15 16:53:53
回答 2查看 563关注 0票数 0

我正在开发这个应用程序,我已经创建了登录和注册片段以及一个主要的活动。我想在应用程序启动后首先显示登录片段,但是我一直有这个错误,应用程序崩溃了:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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)

}

还有我的导航文件

代码语言:javascript
运行
复制
<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,然后显示其他屏幕。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-15 18:53:21

从导航图中删除所有活动标记。将app:startDestination="@id/mainActivity"更改为app:startDestination="@id/loginFragment"

票数 1
EN

Stack Overflow用户

发布于 2021-11-15 18:52:03

来自医生们

注意:导航组件是为具有、一个主要活动和多个片段目的地的应用程序设计的。主活动与导航图相关联,并包含负责根据需要交换目的地的NavHostFragment。在具有多个活动目的地的应用程序中,每个活动都有自己的导航图。

其思想是,您有一个活动,它是一个NavHost,它充当一个容器。所有目的地都是Fragment,并被交换到容器内和容器外,以便在应用程序中“导航”。由于您试图在导航图中使用Activity作为目的地,所以我假设这就是您的问题--您的目的地必须是碎片(包括您的startDestination)。

另外,由于您正在做登录操作,所以有一个教程介绍了如何处理这个确切的用例:https://developer.android.com/guide/navigation/navigation-conditional

请记住,您的startDestination基本上位于后台,不能弹出-这是用户看到的最后一件事,如果他们退出应用程序(如果它自动转发到另一个片段,他们将无法退出)。如果您想让登录屏幕成为他们看到的第一件事,就需要记住一些事情(如果要处理他们已经登录的情况,可以自动导航到其他地方)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69978060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档