2

各アイテムをクリックしても「新しいアクティビティ」を開始できません。if-else などの条件を使用しています。

if (item.equals("Aerosol")) {
  startActivity(new Intent(Search.this, Aerosol.class));
  startActivity(intent);

私はこれを使用していますが、問題はありませんが、次のクラスに行くことができません。

4

2 に答える 2

3

インテントを開始するには、AndroidManifest でインテントを次のように宣言します。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name">
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="com.example.package.EXCLASS" />

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

where.MainActivityはクラスの名前、 はcom.example.packageパッケージ名、EXCLASSは好きなものですが、名前を覚えておいてください。

開始したい新しいアクティビティごとに<activity> />、同じパッケージ名で AndroidManifest でnew を再宣言する必要がEXCLASSありandroid:name=".MainActivity"ます。フロント。これは<application> />宣言の後に配置する必要があるため、次のようになります。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".StartingActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.package.EXCLASS" />

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

あなたのクラス、私の例の MainActivity では、あなたのパッケージ名がstartActivity(new Intent("com.example.package.EXCLASS"));どこにあるかを宣言し、AndroidManifest で宣言したものは何でもです。com.example.packageEXCLASS

最終的な結果は次のようになります。

private void select(String item) {
    try {
        if (item.equals("Aerosol")) {
            startActivity(new Intent("com.example.package.CLASSONE"));
        }
        if (item.equals("Aluminium")) {
            startActivity(new Intent("com.example.package.CLASSTWO"));
        }

これが役に立ったことを願っています!

于 2012-09-02T12:28:07.603 に答える
1

あなたがする必要があるのは、インテントを呼び出すのではなく、新しいインテントをインスタンス化することです。

次のようなことをする必要があります。

if (item.equals("Aerosol")) {
    intent = new Intent(Search.this, Aerosol.class);
}else if (item.equals("Aluminium")) {
    intent = new Intent(Search.this, Aluminium.class);
}

startActivity(intent);
于 2012-09-02T12:17:59.373 に答える