Android: Unable to find explicit activity class... startActivity from a PreferenceActivity

danieleds picture danieleds · Oct 30, 2011 · Viewed 36.9k times · Source

I'm trying to start a new Activity from a PreferenceActivity. However, it fails with "Unable to find explicit activity class. Have you declared this activity in your AndroidManifest.xml?"

Well, yeah, I declared it:

<application [......] android:debuggable="true">
    <activity android:name=".AlarmSettings"
              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=".FlashLightActivity"></activity>

    <receiver
        android:name="AlarmReceiver"
        android:process=":remote" >
    </receiver>
</application>

AlarmSettings is my PreferenceActivity. AlarmSettings calls FlashLightActivity this way:

Intent i = new Intent(AlarmSettings.this, FlashLightActivity.class);
startActivity(i);

And this is FlashLightActivity:

public class FlashLightActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.flashlight);
   }    
}

... I don't know what to do. Any ideas?

Answer

Mirey picture Mirey · May 30, 2012

I had this problem too. If you read carefully the error on the logcat, you will know what to do.

You have to declare the activity in the AndroidManifest.xml

    <activity
        android:name=".TheNameOfMyActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>