Ошибка приведения значений дополнительных значений в Android: двойное приведение к целому
У меня такая проблема при отправке намерения с дополнительными функциями: значения, заданные как double, преобразуются в целое число и не могут быть прочитаны как double при получении намерения Код ниже.
создание метода Intent в onUpdate для WidgetProvider:
Intent send = new Intent("ACTION_SEND_DATA");
send.putExtra("url", "http://some-url.com");
send.putExtra(LONGITUDE, new Double(13.65));
send.putExtra(LATITUDE, new Double(43.12));
PendingIntent sendPendingIntent = PendingIntent.getBroadcast(context, 0, send, 0);
views.setOnClickPendingIntent(R.id.Change, sendPendingIntent);
Получение намерения в методе onReceive WidgetProvider:
else if (intent.getAction().equals("ACTION_SEND_DATA"))
{
Log.d("WIDGET", "received ACTION_SEND_DATA intent");
String msg = intent.getStringExtra("url");
Bundle extras = intent.getExtras();
if (extras != null)
{
// Get data via the key
String url = extras.getString("url");
Double longitude = new Double(intent.getDoubleExtra(LONGITUDE, -100));
Double latitude = new Double(extras.getDouble(LATITUDE, -100));
msg = "received: " + url + " " + longitude + " " + latitude;
sendData(extras);
}
else
msg += " no extras!";
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
}
Это строки:
Double longitude = new Double(intent.getDoubleExtra(LONGITUDE, -100));
Double latitude = new Double(extras.getDouble(LATITUDE, -100));
бросить предупреждение в DDMS LogCat:
http://i47.tinypic.com/24kwk8h.png
Что может вызвать эту ошибку?
2 ответа
Чтобы не получать это предупреждение, вы могли бы использовать -100.0 вместо этого, потому что это целое число, на которое он жалуется. Но это не решит твою проблему.
Похоже, что ваше намерение не имеет значения для ключа LONGITUDE.
Вот несколько советов:
не используйте "новый дубль". Вы можете просто поставить значение в одиночку. компилятор знает, что с этим делать. "new Double" используется, если вы хотите различать переменные вместо значений. Например:
Double x=10.0,y=x,z=new Double(x);
так вот, x==y, но x!=z .
попробуйте изменить его во всем коде и посмотрите, поможет ли это.
для "getDoubleExtra" используйте 100.0 вместо 100.
для получения значений вам не нужно использовать Double. двойник в порядке. Вы также можете использовать ноль в качестве значения по умолчанию, если хотите (если вы используете Double) .