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

萝らか妹 提交于 2019-11-26 14:43:38

问题


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?


回答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.




回答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>



回答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.




回答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>



回答5:


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'



来源:https://stackoverflow.com/questions/7946258/android-unable-to-find-explicit-activity-class-startactivity-from-a-preferen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!