Ошибка приведения значений дополнительных значений в Android: двойное приведение к целому

1

У меня возникает такая проблема, когда вы отправляете намерение с помощью дополнительных функций: значения, помеченные как double, преобразуются в integer и не могут считаться двойными при получении намерения. Код ниже.

создание 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

Что может вызвать эту ошибку?

  • 1
    Проверьте содержание дополнений в onReceive() . Либо добавьте код отладки для вывода дополнительных данных, либо установите точку останова и посмотрите на них. Я предполагаю, что вы на самом деле не посылаете Intent которым вы себя считаете.
Теги:
casting
android-intent

2 ответа

0
Лучший ответ

Чтобы не получить это предупреждение, вы можете использовать -100.0 вместо этого, потому что это Integer, о котором он жалуется. Но это не решит вашу проблему.

Ваш намерение, похоже, не имеет значения для ключа LONGITUDE.

  • 0
    Спасибо, это было правдой.
0

вот несколько советов:

  1. не используйте "новый двойной". вы можете просто поставить значение в одиночку. компилятор знает, что с этим делать. "new Double" используется, если вы хотите различать переменные вместо значений. Например:

    Double x=10.0,y=x,z=new Double(x);
    

    поэтому здесь x == y, но x! = z.

    попробуйте изменить его во всем своем коде и посмотреть, помогает ли он.

  2. для "getDoubleExtra" используйте 100.0 вместо 100.

  3. для получения значений вам не нужно использовать Double. двойное нормально. вы также можете использовать значение null в качестве значения по умолчанию, если хотите (в случае использования Double).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню