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

Я только начал свою работу в качестве разработчика Android. Мое первое задание - исправить несколько ошибок в вызове приложения DailyFinance.

Одна ошибка связана с пользовательским интерфейсом, если вы нажмете кнопку на определенной странице, появится диалоговое окно, но диалоговое окно не отображается должным образом. Мой вопрос заключается в том, как быстро найти код (файл макета XML, а также действия), связанный с диалогом, в базе кода, с которой я не знаком?

2 ответа

Решение

На ум приходят пара подходов:

  1. Найдите любой текст, отображаемый в целевом диалоговом окне.
  2. Найдите текст кнопки и найдите файл макета xml, содержащий кнопку, которая запускает целевой диалог
  3. Найдя файл макета xml, определите кнопку "id" как xxxxx, затем вы сможете продолжить поиск источника, содержащего ссылки на "R.id.xxxxx".

Установите точки останова для методов в файлах, которые реализуют диалог. Так что, возможно, искать диалог, а затем ставить точки останова внутри диалога. Посмотрите, как это ударится, когда ваш диалог подтянется. Или просто посмотрите, где расположены макеты в файлах, в которых есть слово "диалог". ищите R.layout.someLayoutName.

Еще одно предложение касается некоторых сложных макетов, где сложно увидеть, что происходит, вы можете использовать HierachyViewer, чтобы увидеть макеты представлений во время выполнения: http://developer.android.com/tools/help/hierarchy-viewer.html Его стоит запустить в вашем приложении, чтобы увидеть структуру макетов во время выполнения, что часто трудно увидеть эти отношения в файлах макета, прежде чем они были раздуты.

Кстати, я был студентом CS, и самая большая ошибка, которую я когда-либо делал, состояла не в том, чтобы изучать отладчик внутри и снаружи. Без сомнения, это самый мощный союзник, которого вы должны выучить и исправить ошибки. Если вы думаете об этом, код на самом деле является лишь абстракцией, пока вы не увидите, что он работает внутри отладчика.

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