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

37,566

Solution 1

Copying poster's solution into the answer section, in order to remove this from the "Unanswered" filter:

It wasn't a problem with my code, but with Eclipse and the Android SDK. After some research, I did "Help -> Check for updates" in Eclipse and everything is working now.

Solution 2

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>

Solution 3

For me this error occurred because I had moved my activity class file to a different package and for some reason Eclipse didn't refactor it correctly. Always use a fully qualified name for your activity and double-check that it is accurate.

Solution 4

When starting an activity from inside another you need to provide your AndroidManifest file the parent child relationship, to ensure that the started activity will return its result to you requires parent activity. example,

<activity
            android:name="ACTIVITY TO BE STARTED"
            android:label="@string/TITLE"
            android:screenOrientation="landscape" >
             <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="ACTIVITY STARTED FROM?RETURNING TO" />
        </activity>
Share:
37,566
danieleds
Author by

danieleds

Updated on April 11, 2020

Comments

  • danieleds
    danieleds about 4 years

    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?

  • vanloi999
    vanloi999 almost 11 years
    I had this problem too. Everything was OK until I switch to Android ADT Bundle Package (Eclipse + Android SDK) from developer.android.com :(. But your way did not work for me :(
  • X.X_Mass_Developer
    X.X_Mass_Developer almost 11 years
    if you read carefully the question, he had already declared it in the manifest!
  • GothamNite
    GothamNite almost 11 years
    I seem to be having the same problem. My code seems to check out, unfortunately I have the Android ADT Bundle and it is not working for me. Any ideas?