1

2 つのアクティビティで構成される非常に単純なアプリケーション (教科書の例) があります。最初のアクティビティUsingIntentActivityにはボタンがあります。SecondActivityこのボタンをクリックすると、画面にテキストを表示する2 番目のアクティビティが呼び出される必要があります。

私はこれを使用して達成することができます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>

したがって、intent-filter があり、そのカテゴリは に設定されていDEFAULTます。しかし、このようにアプリを実行しようとして、アプリのボタンをクリックするとUsingIntentActivityクラッシュします。log cat には、次のメッセージが表示されます。

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

そして、この記事の最初に書いた startActivity メソッドの呼び出しを指しています。

誰かが同様の問題を抱えていましたか?私はどこかで間違いを犯しましたか?

Manifest更新: また、2 番目のアクティビティ タグを開いた行のファイルに警告があることに気付きました。それは言う:エクスポートされた活動は許可​​を必要としません

たぶん、この警告は私の問題で何かをしなければなりません..

4

1 に答える 1

1

に従って、マニフェスト ファイルに 2 番目のアクティビティを作成したことを送信すると、

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 に答える