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
например.
Может быть, это работа для других