1

我有一个非常简单的应用程序(教科书中的一个例子),它由 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" />

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

所以有一个意图过滤器,它的类别设置为DEFAULT. 但是当我尝试像这样运行应用程序并单击UsingIntentActivity应用程序的按钮时崩溃。在日志猫中,我可以看到以下消息:

FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute the method of the activity

然后它指向了我在本文开头写的 startActivity 方法的调用。

有没有人有类似的问题?我在某个地方犯了错误吗?

更新:我还注意到Manifest在我打开第二个活动标签的那一行的文件中有一个警告。它说:导出的活动不需要许可

也许这个警告与我的问题有关..

4

1 回答 1

1

当您发送时,您已根据清单文件在清单文件中创建了第二个活动

startActivity(new Intent("net.dreamingpixel.SecondActivity"));

这里 net.dreamingpixel.SecondActivity 的意思是,这里你需要提供你在项目中创建的包的活动名称...

在顶部的清单中,您将找到包名称。您需要在您的活动中使用该包名称...

这里按照上面的代码..

    net.dreamingpixel ----- is a package
      SecondActivity  ----- is an Activity in that package.
于 2012-07-15T09:41:14.480 回答