我正在编写一个最终会有几个活动的应用程序。然而,现在,我试图从第一个活动开始第二个活动。由于一些奇怪的原因,我总是只得到一个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”,如代码片段中的注释行所示,并将其添加到清单文件中,但结果相同......: - (
我错过了什么?任何提示?
答案 0 :(得分:1)
您的Activity的android:名称应该是Activity的完整路径,包括包。那是你的吗?
此外,这可能不适合您,但对于仅在您的应用程序中调用的活动,您可以使用明确的意图:
Intent intent = new Intent(this, ItemDetails.class);
答案 1 :(得分:1)
啊哈!最后我明白了!我错过了将包前缀添加到Activity的类名。我原以为清单标签的package =“...”属性会照顾到......
对不起带宽然后......
迈克尔
后来添加:谢谢大家!你指出了我之后才看到你的追加,但是......
答案 2 :(得分:0)
您需要在Intent中指定要启动的活动。
intent.setClass(this, YourActivityClass.class);
现在看起来你正在发射一个没有目标的意图。