Мое первое приложение, созданное без помощи какого-либо туториала, наконец-то готово.

Последние шаги

Проблема, которая у меня была раньше с методом операции, была легко устранена. Мне просто нужно было вызвать мой метод вычисления, прежде чем я изменил значение оператора.

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

Это могло быть предубеждением относительно новизны, но действительно казалось, что правильное форматирование было самой сложной и разочаровывающей частью всего этого проекта. Когда предыдущие части этого не работали, у меня обычно было некоторое представление, почему, здесь я был совершенно не уверен, что идет не так. Поначалу это казалось довольно простым, я даже немного поторопился и сделал «финальный» коммит после того, как мой первый метод форматирования оказался рабочим. Однако я заметил, что он форматировал практически все: число вроде 742,34348 заканчивалось в экспоненциальном представлении.

В моем методе я установил переменную, чтобы определить, существует ли «.» в числе и где он находится. Затем я попытался настроить на основе этого условия, которые определяли бы, как форматировать число. Как бы я ни менял условия, результаты всегда были одинаковыми, поэтому я понял, что мое форматирование, за исключением того, что было в последнем предложении «else», вообще не использовалось.

Вместо использования точек останова и отладки я подумал, что было бы проще изолировать проблему в контексте, где я мог бы быстро манипулировать данными, поэтому я просто вставил свой метод форматирования в Eclipse. У меня метод возвращал только десятичный индекс для определенных значений, и результаты оказались не такими, как я ожидал. Итак, я заставил метод выводить только значение числа, и я нашел свою проблему. Числа, которые я определил как двойные, отображались в экспоненте еще до того, как я успел их отформатировать. Чтобы исправить это, и я оставил это закомментированным в своем коде, я подумал, что могу использовать исходное форматирование, а затем снова отформатировать его на основе значения показателя степени. Это в любом случае не сработало бы и приводило к сбою моего приложения, потому что я пытался отформатировать String, как если бы это был Double.

После небольшого исследования я узнал о BigDecimal. Это казалось идеальным, мои числа не будут преобразованы, пока у меня не будет возможности отформатировать их, и я мог заставить свой вывод выглядеть так, как я хотел. Я подумал, что могу просто вставить их в свой код вместо Doubles. Проблема в том, что BigDecimals неизменяемы, поэтому я не мог выполнять над ними арифметические действия, и нет простого способа получить их квадратный корень. Чтобы это работало, перед тем, как Double появится на экране, я конвертирую его в новый BigDecimal, а затем использую свой модуль форматирования для BigDecimal. Теперь у меня есть рабочий калькулятор.

Итак, это приложение, которое я думал, будет простым. Мне не терпится увидеть, каково это иметь дело с чем-то более сложным, например, с более чем одним действием. Враги, я хотел бы закончить дальше, но я также собираюсь начать работу над приложением для списка дел и, возможно, над будильником.

Первоначально опубликовано на сайте amazingadventuresinandroid.blogspot.com 4 августа 2015 г.