Наложение карты Android дает исключение нулевого указателя

Я храню свои широту и долготу в контент-провайдере как настоящий тип.

Когда я извлекаю его с помощью курсора, я использую .getDouble, что означает, что теперь это двойник.

Этот метод принимает lat и long только в типе int newGeoPoint ( latitude, longitude )

Когда я попытался преобразовать lat и lon из double в int, я получил исключение нулевого указателя java.

Это то, что я пробовал Int (широта * 1E6); Вы можете пролить свет на это?

Обновить

Я преобразовал это двойное значение в строку, затем передал его в тост, я получаю значения в тосте. Теперь проблема в том, как мне преобразовать из double в int без потери части с плавающей запятой.

Заранее спасибо!!


person Community    schedule 24.05.2012    source источник
comment
Здесь недостаточно информации, чтобы помочь вам. Публикуйте сообщения logcat, код и все, что может иметь отношение. NPE может происходить из разных вещей   -  person dymmeh    schedule 24.05.2012
comment
@dymmeh: Журнал кота, показывающий ошибку на newGeoPoint (широта, долгота); исключение нулевого указателя.   -  person    schedule 24.05.2012
comment
@dymmeh: расскажите, как вообще это делают с помощью контент-провайдера.   -  person    schedule 24.05.2012
comment
Если вы используете тип данных Double (не double .. обратите внимание на заглавную букву D), ваши значения широты и долготы могут быть нулевыми. Невозможно сказать, не увидев своего кода.   -  person dymmeh    schedule 24.05.2012
comment
@dymmeh: Пожалуйста, прочтите мой вопрос как следует, я не упоминал, где говорится, что я использую Long.   -  person    schedule 24.05.2012
comment
Я отредактировал свой комментарий, чтобы сказать "Двойной" .. Применяется тот же принцип ..   -  person dymmeh    schedule 24.05.2012
comment
@dymmeh: Это D, смотрите мое обновление.   -  person    schedule 24.05.2012
comment
Ваш звонок выглядит так? newGeoPoint ((int) (широта * 1e6), (int) (долгота * 1e6));   -  person dymmeh    schedule 24.05.2012
comment
@dymmeh: Нет, это так: Integer l = (integer) (lo * 1E6);   -  person    schedule 24.05.2012
comment
Попробуйте, как я опубликовал, и сообщите об этом. Вы пытаетесь создать объект типа Integer без фактической инициализации целого числа.   -  person dymmeh    schedule 24.05.2012
comment
@dymmeh: Сработал как шарм, разница между синтаксисом ч / б у меня и у меня.   -  person    schedule 24.05.2012
comment
Я даже не уверен, как у вас получилось Integer l = (integer) (lo * 1E6); работать. Это даже не должно компилироваться   -  person dymmeh    schedule 24.05.2012


Ответы (1)


Попробуйте разыграть после умножения:

int longitude = (int) (longitudeInDouble * 1E6)
person znat    schedule 01.06.2012