Android: невозможно найти явный класс активности... startActivity из PreferenceActivity

Я пытаюсь начать новое действие с PreferenceActivity. Тем не менее он завершается с ошибкой "Не удается найти явный класс активности. Вы объявили эту активность в вашем AndroidManifest.xml?"

Ну да, я это заявил

<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 - это мой PreferenceActivity. AlarmSettings вызывает FlashLightActivity следующим образом:

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

И это FlashLightActivity:

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

... я не знаю что делать Есть идеи?

5 ответов

Решение

Скопируйте решение автора в раздел ответов, чтобы удалить его из фильтра "Без ответа":

Это была не проблема с моим кодом, но с Eclipse и Android SDK. После некоторых исследований я сделал "Справка -> Проверить обновления" в Eclipse, и теперь все работает.

У меня тоже была эта пробема. Если вы внимательно прочитаете ошибку в logcat, вы будете знать, что делать.

Вы должны объявить активность в AndroidManifest.xml

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

Для меня эта ошибка произошла, потому что я переместил свой файл класса активности в другой пакет, и по какой-то причине Eclipse не реорганизовал его правильно. Всегда используйте полное имя для вашей деятельности и перепроверьте, что оно точное.

При запуске действия из другого источника необходимо предоставить вашему файлу AndroidManifest родительские дочерние отношения, чтобы для того, чтобы запущенное действие возвращало вам свой результат, требуется родительское действие. пример,

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

У меня была та же проблема, что я сделал, это написал заявление о намерениях внутри onCreate функция службы или макета. на самом деле это то, что сказал "не мог получить доступ к Explicity"

В моем случае мне просто пришлось переименовать класс, потому что это было слово, зарезервированное от студии Android, или у меня есть другая ссылка, Итак:

  • Мог найти это с crl+space и проверьте маршрут вашего предложения
  • Проверьте импорт в классе и удалите ненужные
  • Не используйте имена по умолчанию

Так что не используйте FlashLightActivity например.

Может быть, это работа для других

Другие вопросы по тегам