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

6

8

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?

Statuesque answered 30/10, 2011 at 16:42 Comment(7)
Try Project->Clean in Eclipse, and re-run.Silveira
That's strange. Try to remove the beginning dot from .FlashLightActivity and test with a bare FlashLightActivity name or try to provide the full package name of your activity like com.example.FlashLightActivity.Nave
It fails in exactly the same way :SStatuesque
Damn! Does the FlashLightActivity class is in the same package? You surely know developer.android.com/guide/topics/manifest/… but else it can help… Tried fully qualified name on both side (AndroidManifest and startActivity)?Nave
Tried every combination... it doesn't work. Yes, the fully qualified name is the same. So, if the code is ok... I can only think about some strange Eclipse problemStatuesque
Can you show what do you have in android:package field (in <application> element? And what's the package of FlashLightActivity class?Ark
hum, do you mean the <manifest> element? <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.dhss.alarmflash" package com.dhss.alarmflash; I noticed that Eclipse can't generate a new bin/resources.ap_ file... it's always the same and if I remove it, it can't recreate it. Could it be related?Statuesque
B
0

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.

Benedicto answered 4/3, 2012 at 3:57 Comment(2)
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 :(Charlottecharlottenburg
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?Isobath
L
6

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>
Luu answered 30/5, 2012 at 12:2 Comment(1)
if you read carefully the question, he had already declared it in the manifest!Appellation
D
2

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.

Decanter answered 18/12, 2013 at 15:51 Comment(0)
M
2

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>
Marron answered 26/5, 2014 at 6:58 Comment(0)
B
0

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.

Benedicto answered 4/3, 2012 at 3:57 Comment(2)
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 :(Charlottecharlottenburg
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?Isobath
P
0

I had the same problem, what I did is wrote the Intent declaration inside the onCreate function of the Service or the Layout. actually that is what said 'could not access Explicity'

Password answered 4/7, 2016 at 14:30 Comment(0)
D
0

In my case, i just had to rename the class, because that was a word reserved from android studio or have another reference, So:

  • Could find this with crl+space and check the route of your suggest
  • Check out the imports in the class and delete which are not necessary
  • Don't use default names

So don't use FlashLightActivity for example.

Maybe its work for others

Dodds answered 10/4, 2020 at 19:45 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.