如何使用自定义的意图开始一个活动?(How to start an activity using a

2019-10-17 00:22发布

我有一个非常简单的应用(从教科书的例子),其由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>

因此,有意向过滤器和类别设置为DEFAULT 。 但是,当我尝试运行这样的应用,然后点击的按钮UsingIntentActivity应用程序崩溃。 在日志中的猫,我可以看到以下信息:

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

然后它指向startActivity的方法,我在这篇文章的开头写的召唤。

有没有人有类似的问题? 难道我犯了一个错误的地方?

更新:我也注意到,有在警告Manifest上,我打开第二个活动标签行文件。 它说:导出活动并不需要许可

也许这个警告必须做与我的问题东西..

Answer 1:

当你发送你已经在清单文件按照创建第二个活动

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

这里net.dreamingpixel.SecondActivity手段,在这里你需要提供您的项目创建包的活动名称...

在清单顶部,你会发现包的名称。 您需要使用该套件名称与您的活动...

此处按照上述代码..

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


文章来源: How to start an activity using a custom intent?