ActivityNotFoundException:找不到处理Intent的Activity

时间:2016-07-06 22:30:39

标签: android android-intent android-activity

害怕成为那个已经问过问题的人......我已经查看了这个问题的各种解决方案,似乎没有解决我的问题。 我只想要一个按钮,我想开始一个地图活动。

以下是活动:

  public void OnclickButtonListener() {
    button_map = (Button)findViewById(R.id.button);
    button_map.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent mapintent = new Intent("mf.tutorial.MapsActivity");
            startActivity(mapintent);
        }
    });

并在我的清单文件中处理意图:

        <activity
        android:name=".MapsActivity"
        android:label="@string/title_activity_maps">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

返回的错误如下所示:

ActivityNotFoundException: No Activity found to handle Intent { act=mf.tutorial.MapsActivity }

任何帮助都非常感谢,因为它花了我很多年才能实现这一目标,这只是最新的绊脚石。我很乐意提供可能与解决方案相关的代码的任何其他部分!

非常感谢!

2 个答案:

答案 0 :(得分:1)

我假设MapsActivity是你的apk中的一项活动?在这种情况下,您将使用Intent intent = new Intent(context, MapsActivity.class);您使用的Intent版本用于运行具有针对特定操作的intent过滤器的活动。通常用于访问系统应用程序,如相机应用程序或拨号器。

答案 1 :(得分:1)

当您尝试启动Activity时,请执行以下操作:

    Intent mapintent = new Intent("mf.tutorial.MapsActivity");

这会创建一个Intent,并将Intent中的行动设置为"mf.tutorial.MapsActivity"

当您致电startActivity()时,Android会尝试在已安装的应用中找到Activity,知道如何处理行动"mf.tutorial.MapsActivity"。没有,所以你得到ActivityNotFoundException

您要做的是通过显式COMPONENT启动Activity,而不是通过隐式ACTION启动。这样做:

    Intent mapintent = new Intent(context, MapsActivity.class);
    startActivity(mapintent);

使用2参数构造函数可以显式设置COMPONENT(在本例中为MapsActivity)。参数context应该是对调用Activity的引用。