Подтвердить что ты не робот

Общие ошибки при написании проекта Android

Каковы общие ошибки, о которых следует позаботиться, работая над проектом Android?

Это могут быть

  • Особая ошибка Android
  • Особая ошибка Java
4b9b3361

Ответ 1

Я перечислю некоторые ошибки, которые я всегда получаю.

Статья - Top 10 ошибок Java

  • Ошибка NullPointer

    • когда я использую инициализированную переменную или объект, который мы создаем. (Java)
    • когда мы используем какой-то макет, который не находится в xml, который мы установили в контексте. (Android)


  • Исключение ClassCast
    • когда программа пытается применить объект к типу, с которым он несовместим. (например: когда я пытаюсь использовать линейный макет, который объявляется как относительный макет в макете xml).


  • StackOverflowError
    • он может также встречаться в правильно написанных (но глубоко рекурсивных) программах. (java and android)
    • когда программа становится бесконечно рекурсивной.
    • мы создаем макет (глубокий и сложный), который превышает этот стек платформы или виртуальной машины. рекурсивная или слишком много макета создаст ошибку в Android
    • Слишком много внутренних макетов.


  • ActivityNotFoundException: не удается найти явное исключение класса активности

    • Действие не объявляется в манифесте.


  • Безопасность безопасности Android
    • Вам необходимо объявить все разрешения в приложении Manifest, чтобы ваше приложение проверьте эту ссылку (интернет, доступ к контактам, gps, состояние wifi, запись на SDCard и т.д.).


  • OutOfMemoryError
    • когда делается запрос на память, который не может быть выполнен с использованием доступных ресурсов платформы. в основном с использованием битовой карты, галереи и т.д.


  • Приложение не отвечает (ANR)

    • В основном происходит, когда вы создаете сетевую функцию или какой-то длительный процесс.

    это блокирует поток пользовательского интерфейса, поэтому пользователь не может работать. чтобы избежать ANR прочитать это и this

Это то, что я в основном получаю при создании Android Project.

  • Попробуйте использовать <Б > Попробуй поймать блок во всем месте программы. Dont оставляют ваш блок catch пустым, так как это может скрыть ошибки:

Да:

 try{
    // try something
  } catch (Exception e) {
      Log.e("TAG", "Exception in try catch", e);
      return false;
  }
  return true;
<Не p > Нет:
  try{
    // try something
  } catch (Exception e) {
    return false;
  }
  return true;


Используйте правильное Преобразование имен для всех переменных и идентификаторов в макете. *


Я прочитал одна статья из сети, содержащую некоторую ошибку, теперь добавляю, что alos, если у него есть избыточность, пожалуйста, простите меня.

Проблема: Мой ранее хороший RelativeLayout делает уродливую кучу, или некоторые элементы больше не видны... Что происходит??? Я просто переместил элемент в нем... Решение: Никогда не забывайте, что в RelativeLayout элементы ссылаются и размещаются по отношению к их соседям. Возможно, что-то не так в иерархии отношений между вашим элементом. Попробуйте открыть схему в Eclipse и щелкнуть по каждому элементу, чтобы увидеть, где происходит разрыв.

Проблема: Круговые зависимости не могут существовать в RelativeLayout Решение: Вы, вероятно, писали одну и ту же зависимость двумя способами. Например, ImageView как атрибут android: layout_toRightOf TextView и TextView имеет android: layout_toLeftOf ImageView. Только один из них необходим

Проблема: Я написал стиль для одного из моих представлений/макетов, но когда я применяю его в своем xml, у меня нет отображения в средстве просмотра макетов Eclipse Решение: К сожалению, это похоже на ошибку Android ADT, я сообщил об этом, но никаких новостей пока нет. Во всяком случае, никакой паники, стили не работают хорошо, но они не отображаются должным образом в Eclipse. Просто создайте приложение и запустите его на эмуляторе или телефоне, и вы увидите, все ли в порядке или нет.

Проблема: Тост написан правильно, но ничего не отображается Решение: Это обычная ошибка использования: просто добавьте метод .show(), чтобы показать Toast и посмотреть, хорошо ли он работает

Вопрос: Я попытался отобразить String из strings.xml, но у меня просто было число 0x7f060001 Решение: Это не ошибка, просто дисплей из-за того, как андроид занимается ресурсами. Когда вы хотите получить ресурс, вы должны использовать метод getString (R.id.something), getDrawable,... В противном случае вы просто будете отображать ссылку, написанную в классе R

Проблема: Некоторое изменение кода не имеет никакого эффекта в приложении Решение: есть 2 варианта: либо вы забыли что-то вроде .show() Toast, либо эмулятор не обновляет ваше приложение. В этом случае вы должны проверить опцию "Протирать пользовательские данные" в конфигурации запуска эмулятора в Eclipse.

Проблема: Как отображать границы на моем столе? Решение: Нет прямого способа сделать это в android, вы должны использовать трюк: http://www.droidnova.com/display-borders-in-tablelayout,112.html

Проблема: эмулятор записывает в japaneese с тем, что вы изменили какой-либо параметр Решение: Иногда это бывает довольно легко исправить, просто щелкните в любом поле EditText и измените тип ввода на то, что вы хотите

Проблема: Я не могу заставить контекстное меню появляться в эмуляторе Решение: длительный щелчок на эмуляторе, похоже, не регистрируется на каждом виде, вам нужно нажать кнопку в центре четырех указательных стрелок

Проблема: Я следую учебному курсу о маршруте карты, но я не могу заставить его работать, android не находит пакет Решение: Возможно, вы использовали учебник, написанный для 1.5 SDK. В это время был пакет для отображения маршрута в Android, но он был удален в следующем SDK и больше не доступен. Это просто невозможно. Кажется, что есть трюк с файлами KML, но ничего официального

Проблема: Отправка координат в эмулятор дает неправильное положение Решение: убедитесь, что вы написали координату как 51.16548, а не 51,16548 или 5116548

Проблема: Только исходный поток, создавший иерархию представлений, может коснуться его представлений. Решение: Вы, должно быть, пытались обновить содержимое представления из другого потока, кроме потока пользовательского интерфейса. 2 варианта исправления: либо создайте обработчик в вашем потоке пользовательского интерфейса, либо опубликуйте свой Runnable для этого обработчика или используйте метод runOnUIThread для запуска строк кода, которые делают обновление

Проблема: доступ к localhost 127.0.0.1 не работает Решение: он работает, вы просто не делаете это правильно: используйте 10.0.2.2

Ответ 2

  • Забыть регистрировать новые действия в манифесте.
  • Кастинг с неправильным типом в findViewById() при получении ссылок на виджеты ui

Ответ 3

Другая типичная ошибка начинающего - это не чистый проект после ошибки в xml...

Ответ 4

Хотя нельзя назвать ошибкой (но ошибкой) В большинстве случаев я забываю добавить разрешения (т.е. CAMERA, WRITE_EXTERNAL_STORAGE) в файле AndroidManifest.

Ответ 5

  • объявление <uses-library android:name="com.google.android.maps" /> в неправильном месте манифеста.
  • забыть show() тост.
  • (Добавлено 2011/05/28) адаптер db, который полагается на столбец _id. Смотрите этот поток

Также не прямо ошибка, а неправильное представление:

  • То, что база данных SQLite (так что файл) находится на жестком диске. Он находится в файле образа эмулятора. Больше информации here

Ответ 6

Ошибка монстра OutOfMemoryError: размер растрового изображения превышает бюджет VM

Ответ 7

Другая распространенная ошибка или ошибка:

Пока мы расширяем свою активность с помощью ListActivity

public class ListViewDemo extends ListActivity
{
    // some code here
}

И всегда забывал добавлять id android:id="@id/android:list" в тег ListView в XML-макете.

И адаптер выдает NullPointerException из-за стандартного id android:id="@+id/ListView01

Ответ 8

Самая распространенная ошибка или проблема возникают при создании проекта в Eclipse, и мы должны указывать имя pakage, которое должно быть как минимум одним dot (.), но большинство новичков не знает об этом.

Как и у пакета приложений Android, должно быть два уровня.

например. - com.myapp

но каждый новичок застрял в этой точке.

Ответ 9

java.net.SocketException, если пользователь не определяет разрешения для Интернета в файле mainfest при использовании webservice

Ответ 10

одна общая ошибка - это nullPointerException...

Ответ 11

Одна ошибка, которую я делаю снова и снова, пытается установить свойство цвета с использованием идентификатора ресурса.

Я могу установить свой текст представления, указав целочисленный идентификатор ресурса,

view.setText(R.string.my_text);

но если я попробую одно и то же для цвета, я получу оттенок темно-серого, независимо от фактического значения цвета:

view.setBackgroundColor(R.color.my_colour);

Проблема заключается в том, что цвета Android представлены в виде 32-битных значений целочисленного значения ARGB, так что ожидается в параметре int. Это должно быть:

view.setBackgroundColor(context.getResources().getColor(R.color.my_colour));

Ответ 12

Мы должны правильно закрыть базу данных Sqlite и курсор.

Идет утечка памяти и исключение из закрытой cusror и базы данных

Ответ 13

Авария приложения без каких-либо уведомлений при повороте телефона (автоматическое вращение включено в телефоне). Это связано с "ориентацией". Есть несколько решений, самый простой - установить android:preferedOrientation="portrait" в файле манифеста для каждого действия. Кроме того, установите в коде это, если вы динамически создаете действия. Другие решения включают правильное обращение с onPause, onRestart... и т.д., Методы активности (например, сохранение состояния и т.д.).