【问题标题】:android.content.ActivityNotFoundException: Unable to find explicit activity class, have you declared this activity in your AndroidManifest.xml?android.content.ActivityNotFoundException:无法找到显式活动类,您是否在 AndroidManifest.xml 中声明了此活动?
【发布时间】:2018-09-18 09:07:12
【问题描述】:

我正在尝试启动从 StationFragment 到 Dashan1Activity 的活动。它不工作,让我发疯。我有的是:

  1. 错误信息:

    android.content.ActivityNotFoundException:无法找到显式 活动类{com.coastline20/miaoli.dashan.Dashan1Activity};有 您在 AndroidManifest.xml 中声明了此活动?

  2. 清单

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.coastline20">
    
     <application
        ...        
        <activity android:name=".miaoli.dashan.Dashan1Activity" />
     </application>    
    </manifest>
    
  3. StationFragment

    @Override
    public void onClick(View v) {
      Intent intent = new Intent().setClassName(getActivity(), "miaoli.dashan.Dashan1Activity");
      getActivity().startActivity(intent);
    }
    

【问题讨论】:

  • 您的项目结构是什么样的? com.coastline20/.miaoli.dashan.Dashan1Activity 中有一个 / 不应该在那里。
  • Manifest 文件中的 Station Fragment 声明在哪里。它只显示 Dashan1Activity 声明
  • 片段未在 Android Manifest 中声明。
  • 我不知道为什么会有 / 。
  • 此外,我正在尝试从 StationFragment 到 MainActivity 启动一个活动,并且 / 也存在同样的问题。

标签: android


【解决方案1】:

尝试像这样启动您的下一个活动

@Override
public void onClick(View v) {
  Intent intent = new Intent(getActivity(), new Dashan1Activity());
  getActivity().startActivity(intent);
}

【讨论】:

    【解决方案2】:

    试试这个:

      final Activity ac = getActivity();
      Intent intent = new Intent(ac, Dashan1Activity.class);
      startActivity(intent);
    

    它对我有用

    更新

    你必须写下洞类名称。 “.miaoli.dashan.Dashan1Activity”不是洞类名

    【讨论】:

    • 感谢您的评论。但是,在我的项目中它必须是“setClassName()”。
    • “setClassName()”有什么用?
    • 它分配活动的名称(字符串),而不是活动(类)。
    • 我直到现在才使用它,但也许你必须写下孔类名称。 “.miaoli.dashan.Dashan1Activity”不是洞活动名。希望它有效
    • 有很多项目在点击时会引起活动。因此,它需要活动的名称,而不是活动。
    【解决方案3】:
    @Override
    public void onClick(View v) {
      Intent intent = new Intent(getActivity(), Dashan1Activity.class);
      v.getContext().startActivity(intent);
    }
    

    【讨论】:

      【解决方案4】:

      您在构建应用程序时更改了包名称。所以试试这个。

        Intent intent = new Intent().setClassName(getActivity(), Dashan1Activity.class);
        getActivity().startActivity(intent);
      

      您必须使用 getActivity() 来启动活动。如果您没有使用它,那么它会给出异常,因为 OnClickListenter 类无法启动活动。

      希望对你有帮助。

      更新

      如果你只想要明确的 Intent,试试这个

        Intent intent = new Intent().setClassName(getActivity(), "com.coastline20.miaoli.dashan.Dashan1Activity");
        getActivity().startActivity(intent);
      

      【讨论】:

      • 更新答案与Hadi Ahmadi的评论相同。非常感谢大家。
      【解决方案5】:

      我认为这是因为 android studio 中的一个错误。要解决这个问题,您应该在您的 Run/Debug Configuration 中进行一些更改: 将 Installation Options 路径中的 Deploy 设置为 Nothing ,编译项目然后撤消此设置。它对我很有效。

      【讨论】:

        猜你喜欢
        • 2020-01-22
        • 2015-02-28
        • 2019-02-27
        • 2016-09-14
        • 2015-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多