尝试启动另一个Activity总是只会产生“ActivityNotFoundException”。我错过了什么?

时间:2010-09-01 17:39:14

标签: android

我正在编写一个最终会有几个活动的应用程序。然而,现在,我试图从第一个活动开始第二个活动。由于一些奇怪的原因,我总是只得到一个ActivityNotFoundException。

尝试启动第二个活动的代码为:

    ...
    Intent intent = new Intent(Intent.ACTION_INSERT);
     /* intent.addCategory("foo"); */
    Log.v(TAG, "starting activity: " + intent);             
    startActivity(intent);
    ...

Intent.ACTION_INSERT字符串常量是“android.intent.action.INSERT”。

AndroidManifest.xml中的相应片段为:

    ...
    <activity 
        android:label="@string/item_details" 
        android:name="ItemDetails"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.INSERT" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="foo" />
        </intent-filter>
    </activity>
    ...

Activity类“ItemDetails”存在,与“调用”Activity位于同一个包中。 Intent名称匹配,根据Android文档,“android.intent.category.DEFAULT”类别应该适用于没有类别集的所有Intent。仍然没有找到该活动。为什么?

我还试图指定一个唯一的类别“foo”,如代码片段中的注释行所示,并将其添加到清单文件中,但结果相同......: - (

我错过了什么?任何提示?

3 个答案:

答案 0 :(得分:1)

您的Activity的android:名称应该是Activity的完整路径,包括包。那是你的吗?

此外,这可能不适合您,但对于仅在您的应用程序中调用的活动,您可以使用明确的意图:

Intent intent = new Intent(this, ItemDetails.class);

答案 1 :(得分:1)

啊哈!最后我明白了!我错过了将包前缀添加到Activity的类名。我原以为清单标签的package =“...”属性会照顾到......

对不起带宽然后......

迈克尔

后来添加:谢谢大家!你指出了我之后才看到你的追加,但是......

答案 2 :(得分:0)

您需要在Intent中指定要启动的活动。

intent.setClass(this, YourActivityClass.class);

现在看起来你正在发射一个没有目标的意图。