0

次のコードを使用して、新しい UI を開きます。

String name="com.hellocw.exportmsg.mysettings";
Intent intent1 = new Intent(name);
startActivity(intent1);

ケース 2 ではうまくいきましたが、ケース 1 ではうまくいきませんでした。なんで?ありがとう!

ケース1

    <activity
        android:name=".MainActivity"
        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=".MainPreferenceActivity"
              android:label="Settings">
        <intent-filter>
            <action android:name="com.hellocw.exportmsg.mysettings" />
            <category android:name="android.intent.category.PREFERENCE" />
        </intent-filter>
    </activity>

ケース 2

    <activity
        android:name=".MainActivity"
        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=".MainPreferenceActivity"
              android:label="Settings">
        <intent-filter>
            <action android:name="com.hellocw.exportmsg.mysettings" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
4

1 に答える 1

0

CATEGORY_PREFERENCEこれは、インテントに追加していないためです。ドキュメントから引用します。

カテゴリが指定されている場合は、アクティビティが処理するカテゴリとしてすべてリストされている必要があります。つまり、カテゴリ CATEGORY_LAUNCHER と CATEGORY_ALTERNATIVE を含める場合、これらのカテゴリの両方をリストする意図を持つコンポーネントにのみ解決されます。アクティビティは、Context.startActivity() で見つけられるように、CATEGORY_DEFAULT をサポートする必要があることがよくあります。

したがって、アクティビティを解決するCATEGORY_PREFERENCEには、明示的にリストする必要があります。例えば、

Intent intent = new Intent("com.hellocw.exportmsg.mysettings");
intent.addCategory(Intent.CATEGORY_PREFERENCE);
startActivity(intent); 
于 2013-05-31T07:44:06.033 に答える