Дополнения Intent работают только на некоторых устройствах.

1

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

Здесь код отправляющей активности:

Intent intent = new Intent();
intent.setClass(waypointListView.this, addWaypointActivity.class);
intent.putExtra("latitude", String.format("%9.6f", globLatitude));
intent.putExtra("longitude", String.format("%9.6f", globLongitude));
startActivityForResult(intent, ACTIVITY_ADD_WAYPOINT);

И так оно читается в новой деятельности:

Intent myIntent = getIntent();
String latitudeStr = myIntent.getExtras().getString("latitude");

try{
  globLatitude = Float.parseFloat(latitudeStr);
} catch(NumberFormatException nfe) {    
  globLatitude=0f;
}

String longitudeStr = myIntent.getExtras().getString("longitude");

try{
  globLongitude = Float.parseFloat(longitudeStr);
} catch(NumberFormatException nfe) {    
  globLongitude=0f;
}

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

Какие-либо предложения?

  • 2
    Есть ли какая-то конкретная причина, по которой вы используете строки вместо поплавков в качестве дополнений? putExtra() принимает число с float ; getFloatExtra() возвращает число с float . Помимо этого, дополнения не волшебным образом исчезают в вызовах startActivity() или startActivityForResult() . Вам нужно выяснить состояния вашего конечного автомата и определить, какой путь вызывает ваше второе действие, где эти дополнения не были бы прикреплены.
  • 0
    Нет - нет причин не использовать float - но я думаю, это не должно иметь никакого значения. Есть только одно место, где вызывается второе действие, и всегда с установленными дополнениями.
Теги:
android-intent

1 ответ

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

Я попытался изменить код, чтобы использовать getFloatExtra() вместо getString и проанализировать его на float, и он решил проблему. Я вижу, что это намного эффективнее, но я до сих пор не понимаю, почему оригинальное решение работало на некоторых устройствах, но не на других.

Дело закрыто!

Ещё вопросы

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