Java.lang.RuntimeException: Произошла ошибка во время выполнения doInBackground ()
Иногда я получаю эту ошибку при сбое в моем приложении
Это полный logCat:
И это мой код .nea class:
Почему я получаю эту ошибку? Как я могу ее решить? Спасибо 🙂
Вероятно, это потому, что вы пытаетесь отобразить что-то на doInBackground (). DoInBackground запускается в рабочем потоке, который не может выполнять какой-либо пользовательский интерфейс (включая показ Тостов, что вы делаете). Вместо этого все работы пользовательского интерфейса должны выполняться onPostExecute ().
Вы не можете работать с графическим интерфейсом в фоновом потоке. Вместо этого вы должны отправить Runnable в обработчик, созданный в потоке GUI, чтобы заставить Toast выполнить правильную нить.
EDIT: поскольку ярлык домашней работы был удален, я дам наброски, как это сделать;
- New () вверх обработчик в вашем потоке графического интерфейса (onCreate – хорошее место) и сохраните его в переменной-члене, скажем, «обработчик».
- Перемещение, показывающее ваш Toast на Runnable (анонимный класс для этого хорош)
- Чтобы показать тост, выполните handler.post () с помощью Runnable в качестве параметра. Runnable будет выполняться в потоке GUI.
Полный пример приведен в этой статье .
Вы показываете Toast в loadFeed который вызывается в doInBackground для вашей AsyncTask . Оттуда вы не должны получать доступ к пользовательскому интерфейсу.
Я думаю, что в этом кодексе Toast делает проблему для вас,
Поскольку вы пытаетесь выполнить UI operation из рабочего потока AsyncTask это никогда не будет разрешено.
UPDATE: если вы хотите что-то обновить из doInBackGround() для AsyncTask используйте publishProgress(Progress. ) и onProgressUpdate(Progress. ) .
Источник
ОБНОВЛЕНО: Android: java.lang.RuntimeException: не удалось запустить Activity ComponentInfo
UPDATE **, поэтому я сделал почти все, что было сказано ниже, и до сих пор получил эту ошибку (см. Новый файл logcat). Его разные, хотя я не знаю, как это исправить. ** Хорошо, поэтому я начинаю, поэтому я действительно не знаю, что происходит. Когда я пытаюсь запустить это приложение в эмуляторе, все это «к сожалению, это приложение остановилось». Я ищу все вопросы, подобные этому, но не смог найти ответ. Кстати, это не готовое приложение или даже даже началось, но я хочу запустить его, прежде чем продолжить. Heres the log cat file thing.
Теперь heres activty_main.xml
Затем вот файл mainActivity.java
То второе действие DisplayMessageActivity.java
И, наконец, файл mainfest
Так оно и есть. Кто-то, пожалуйста, помогите спасибо!
Я заметил одно: вы не указали правильные значения id в некоторых своих xml.
И как мудрый для ваших других деклараций id.
Вы заметите, что в вашей трассе стека он дает номер строки в вашем xml для определения местоположения ошибки.
Это может быть что-то другое. Но по существу у вас плохо сформировался xml.
Ошибка 2
Вам нужно просмотреть трассировку стека назад, чтобы найти источник вашей ошибки, тогда вы, скорее всего, найдете решение самостоятельно.
Сверху вниз вы попадете на строку MainActivity.oncreateOptionsMenu () Выше того, что вы увидите, что она пытается раздуть (ваше меню опций xml), то есть loadXmlResourceParser ()
Это не значит, что вы указываете номер строки xml, но он говорит вам, что проблема с идентификатором ресурса недействительна.
Вам нужно будет опубликовать свои варианты xml в своем вопросе, если вы хотите получить ответ. Но я посмотрю, сможешь ли ты сначала разобраться с этим. Попробуйте прокомментировать элементы и верните их, чтобы посмотреть, что сломано. Я говорю это, потому что на вопрос должен ответить только один вопрос о переполнении стека.
Есть проблемы с вашим XML – вы можете сказать по строке:
Одна вещь, которую я заметил, это то, что, когда вы объявляете атрибут android: id, он должен иметь + в нем, например:
Это связано с тем, что вы создаете идентификатор, а не только для ранее существовавшего, определенного в другом месте (например, вы можете иметь строку, например, «@ string / hello» может находиться в папке значений).
В объявлении для одного из ваших TextViews вас есть:
textSize должен быть числом или размером, например:
Источник
ОБНОВЛЕНО: Android: java.lang.RuntimeException: не удалось запустить Activity ComponentInfo
UPDATE **, поэтому я сделал почти все, что было сказано ниже, и до сих пор получил эту ошибку (см. Новый файл logcat). Его разные, хотя я не знаю, как это исправить. ** Хорошо, поэтому я начинаю, поэтому я действительно не знаю, что происходит. Когда я пытаюсь запустить это приложение в эмуляторе, все это «к сожалению, это приложение остановилось». Я ищу все вопросы, подобные этому, но не смог найти ответ. Кстати, это не готовое приложение или даже даже началось, но я хочу запустить его, прежде чем продолжить. Heres the log cat file thing.
Теперь heres activty_main.xml
Затем вот файл mainActivity.java
То второе действие DisplayMessageActivity.java
И, наконец, файл mainfest
Так оно и есть. Кто-то, пожалуйста, помогите спасибо!
Я заметил одно: вы не указали правильные значения id в некоторых своих xml.
И как мудрый для ваших других деклараций id.
Вы заметите, что в вашей трассе стека он дает номер строки в вашем xml для определения местоположения ошибки.
Это может быть что-то другое. Но по существу у вас плохо сформировался xml.
Ошибка 2
Вам нужно просмотреть трассировку стека назад, чтобы найти источник вашей ошибки, тогда вы, скорее всего, найдете решение самостоятельно.
Сверху вниз вы попадете на строку MainActivity.oncreateOptionsMenu () Выше того, что вы увидите, что она пытается раздуть (ваше меню опций xml), то есть loadXmlResourceParser ()
Это не значит, что вы указываете номер строки xml, но он говорит вам, что проблема с идентификатором ресурса недействительна.
Вам нужно будет опубликовать свои варианты xml в своем вопросе, если вы хотите получить ответ. Но я посмотрю, сможешь ли ты сначала разобраться с этим. Попробуйте прокомментировать элементы и верните их, чтобы посмотреть, что сломано. Я говорю это, потому что на вопрос должен ответить только один вопрос о переполнении стека.
Есть проблемы с вашим XML – вы можете сказать по строке:
Одна вещь, которую я заметил, это то, что, когда вы объявляете атрибут android: id, он должен иметь + в нем, например:
Это связано с тем, что вы создаете идентификатор, а не только для ранее существовавшего, определенного в другом месте (например, вы можете иметь строку, например, «@ string / hello» может находиться в папке значений).
В объявлении для одного из ваших TextViews вас есть:
textSize должен быть числом или размером, например:
Источник