如何使用自定义意图启动活动?

时间:2012-07-15 09:22:35

标签: android android-intent android-activity

我有一个非常简单的应用程序(来自教科书的示例),包含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文件中有一个警告。它说:导出的活动不需要许可

也许这个警告必须对我的问题做点什么..

1 个答案:

答案 0 :(得分:1)

当您发送时,您已根据

在清单文件中创建了第二个活动
startActivity(new Intent("net.dreamingpixel.SecondActivity"));

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

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

这里按照上面的代码..

    net.dreamingpixel ----- is a package
      SecondActivity  ----- is an Activity in that package.