【发布时间】:2021-02-07 17:44:02
【问题描述】:
我有一个非常简单的应用程序(教科书中的一个例子),它包含两个活动:第一个活动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" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
所以有一个意图过滤器,它的类别设置为DEFAULT。但是当我尝试像这样运行应用程序并单击UsingIntentActivity 的按钮时,应用程序崩溃了。在 log cat 中,我可以看到以下消息:
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute the method of the activity
然后它指向我在本文开头写的startActivity方法的调用。
有人遇到过类似的问题吗?我是不是在某个地方弄错了?
更新:我还注意到Manifest 文件中我打开第二个活动标签的行中有一个警告。它说:导出的活动不需要许可
也许这个警告与我的问题有关..
【问题讨论】:
-
您是否将您的包裹命名为“net.dreamingpixel”?
-
包名是“net.dreamingpixel.usingintent”。有错吗?
-
是的,你应该把它命名为“net.dreamingpixel”或者把你的电话改成
startActivity(new Intent("net.dreamingpixel.usingintent.SecondActivity")); -
我已经试过了。它没有帮助..
标签: android android-intent android-activity