我有一个非常简单的应用程序(来自教科书的示例),包含2个活动:第一个活动UsingIntentActivity
有一个按钮。单击此按钮时,必须指向名为SecondActivity
的第二个活动,该活动将在屏幕上显示文本。
我可以使用startActivity(new Intent(this, SecondActivity.class));
然而,在我遇到这个例子的教科书中,使用了另一种形式的相同方法:
startActivity(new Intent("net.dreamingpixel.SecondActivity"));
在Manifest File
中创建了匹配的自定义意图(据我所知):
<activity
android:name=".UsingIntentActivity"
android:label="@string/title_activity_using_intent" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:label="Second Activity" >
<intent-filter>
<action android:name="net.dreamingpixel.SecondActivity" />
<categoty android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
因此有一个intent-filter,其类别设置为DEFAULT
。但是当我尝试像这样运行应用程序并单击UsingIntentActivity
应用程序崩溃的按钮时。在log cat中,我可以看到以下消息:
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute the method of the activity
然后它指向我在本文开头写的startActivity方法的调用。
有没有人有类似的问题?我在某个地方犯了错误吗?
更新:我还注意到我打开第二个活动代码的行上的Manifest
文件中有一个警告。它说:导出的活动不需要许可
也许这个警告必须对我的问题做点什么..
答案 0 :(得分:1)
当您发送时,您已根据
在清单文件中创建了第二个活动startActivity(new Intent("net.dreamingpixel.SecondActivity"));
这里net.dreamingpixel.SecondActivity意味着,在这里你需要提供你在项目中创建的包的活动名称......
在顶部的清单中,您将找到包名称。您需要将该包名与您的活动一起使用......
这里按照上面的代码..
net.dreamingpixel ----- is a package
SecondActivity ----- is an Activity in that package.