【问题标题】:How to navigate to the 'android.intent.action.MAIN' activity via the use of intent?如何通过使用意图导航到“android.intent.action.MAIN”活动?
【发布时间】:2018-01-25 22:27:26
【问题描述】:

使用导航抽屉,我们可以在onNavigationItemSelected 方法中使用意图。

要从 home (content_main) 活动导航到我们的第二个活动,如下所示:

Intent intent = new Intent("com.example.userID.atp_jag.SecondActivity");
startActivity(intent);

这会成功转换到SecondActivity,但是: 当我使用时:

Intent intent = new Intent("com.example.userID.atp_jag.Home");
startActivity(intent);

应用程序崩溃。 你如何通过 Intent 导航回 home Activity(默认的,例如 content_main)?

错误:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.example.userID.atp_jag.Home

【问题讨论】:

  • 首先,在我们自己的应用程序中处理活动时,我们通常使用显式Intents (new Intent(this, SecondActivity.class))。然而,就开始一项而言,“家庭活动”并没有什么神奇之处。您将需要检查 LogCat 并查看与您的崩溃相关的 Java 堆栈跟踪。
  • 我们确实需要更多关于 Home 活动的信息吗?一定是哪里有错别字!活动名称是真实的家吗?包里有atp_jag吗?
  • 用错误更新了问题 - 我找不到错字,我经历了与 SecondActivity 和 Home 相同的过程,除了清单文件有 @987654329 @ 而不是包,但使用它也不起作用。
  • @CommonsWare 使用您的明确意图修复了它。

标签: android android-intent navigation-drawer


【解决方案1】:

通常,您不希望在清单中包含 <intent-filter> 元素,除非您将该组件公开给其他应用程序。因此,例如,启动器活动有一个<intent-filter>,因为启动器活动的点是由主屏幕启动的。

由此得出的结论是,我们通常使用显式的Intents 来启动我们自己的活动。隐式Intents,带有操作字符串,主要用于启动其他应用的活动。

在您的情况下,错误是因为您创建了一个隐式Intent,但是对于一个不存在的操作。切换到明确的Intent 应该可以解决这个问题。

【讨论】:

    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多