Как быстро найти код, связанный с небольшим компонентом пользовательского интерфейса, в большой кодовой базе Android?
Я только начал свою работу в качестве разработчика Android. Мое первое задание - исправить несколько ошибок в вызове приложения DailyFinance.
Одна ошибка связана с пользовательским интерфейсом, если вы нажмете кнопку на определенной странице, появится диалоговое окно, но диалоговое окно не отображается должным образом. Мой вопрос заключается в том, как быстро найти код (файл макета XML, а также действия), связанный с диалогом, в базе кода, с которой я не знаком?
2 ответа
На ум приходят пара подходов:
- Найдите любой текст, отображаемый в целевом диалоговом окне.
- Найдите текст кнопки и найдите файл макета xml, содержащий кнопку, которая запускает целевой диалог
- Найдя файл макета xml, определите кнопку "id" как xxxxx, затем вы сможете продолжить поиск источника, содержащего ссылки на "R.id.xxxxx".
Установите точки останова для методов в файлах, которые реализуют диалог. Так что, возможно, искать диалог, а затем ставить точки останова внутри диалога. Посмотрите, как это ударится, когда ваш диалог подтянется. Или просто посмотрите, где расположены макеты в файлах, в которых есть слово "диалог". ищите R.layout.someLayoutName.
Еще одно предложение касается некоторых сложных макетов, где сложно увидеть, что происходит, вы можете использовать HierachyViewer, чтобы увидеть макеты представлений во время выполнения: http://developer.android.com/tools/help/hierarchy-viewer.html Его стоит запустить в вашем приложении, чтобы увидеть структуру макетов во время выполнения, что часто трудно увидеть эти отношения в файлах макета, прежде чем они были раздуты.
Кстати, я был студентом CS, и самая большая ошибка, которую я когда-либо делал, состояла не в том, чтобы изучать отладчик внутри и снаружи. Без сомнения, это самый мощный союзник, которого вы должны выучить и исправить ошибки. Если вы думаете об этом, код на самом деле является лишь абстракцией, пока вы не увидите, что он работает внутри отладчика.