#java #android #android-activity #preferenceactivity
#java #Android #android-активность #preferenceactivity
Вопрос:
Я пытаюсь запустить новое действие из PreferenceActivity. Однако он завершается с ошибкой «Невозможно найти явный класс activity. Вы объявили это действие в своем 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);
}
}
… Я не знаю, что делать. Есть идеи?
Комментарии:
1. Попробуйте
Project->Clean
в Eclipse и запустите повторно.2. Это странно. Попробуйте удалить начальную точку из
.FlashLightActivity
и протестировать с помощью простогоFlashLightActivity
имени или попробуйте указать полное имя пакета вашей активности, напримерcom.example.FlashLightActivity
.3. Он завершается точно так же: S
4. Черт! Находится ли класс FlashLightActivity в том же пакете? Вы наверняка знаете developer.android.com/guide/topics/manifest /… но в остальном это может помочь… Пробовал полное имя с обеих сторон (AndroidManifest и startActivity)?
5. Перепробовал все комбинации… это не работает. Да, полное имя то же самое. Итак, если код в порядке… Я могу думать только о какой-то странной проблеме Eclipse
Ответ №1:
У меня тоже была эта проблема. Если вы внимательно прочитаете ошибку в logcat, вы будете знать, что делать.
Вы должны объявить activity в AndroidManifest.xml
<activity
android:name=".TheNameOfMyActivity"
android:label="@string/app_name" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Комментарии:
1. если вы внимательно прочитали вопрос, он уже объявил его в манифесте!
Ответ №2:
Для меня эта ошибка произошла из-за того, что я переместил свой файл класса activity в другой пакет, и по какой-то причине Eclipse неправильно его реорганизовал. Всегда используйте полное имя для своего действия и дважды проверяйте его точность.
Ответ №3:
При запуске действия изнутри другого вам необходимо предоставить вашему файлу 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>
Ответ №4:
Копирование решения poster в раздел ответов, чтобы удалить его из фильтра «Без ответа»:
Это была проблема не с моим кодом, а с Eclipse и Android SDK. После некоторых исследований я выполнил «Справка -> Проверить наличие обновлений» в Eclipse, и теперь все работает.
Комментарии:
1. У меня тоже была эта проблема. Все было в порядке, пока я не переключился на пакет Android ADT Bundle (Eclipse Android SDK) из developer.android.com :(. Но ваш способ не сработал для меня:(
2. Кажется, у меня такая же проблема. Мой код, похоже, проверяется, к сожалению, у меня есть пакет Android ADT, и он не работает для меня. Есть идеи?
Ответ №5:
У меня была та же проблема, я написал объявление намерения внутри onCreate
функции сервиса или макета. на самом деле это то, что говорит «не удалось получить доступ к Explicity»
Ответ №6:
В моем случае мне просто пришлось переименовать класс, потому что это было слово, зарезервированное из android studio или имеющее другую ссылку, поэтому:
- Можно найти это с
crl
помощьюspace
и проверить маршрут вашего предложения - Проверьте импорт в классе и удалите ненужные
- Не используйте имена по умолчанию
Так что не используйте FlashLightActivity
, например.
Может быть, его работа для других