В своем приложении я отправляю какие-то намеренные дополнения из одной активности в другую. Но некоторые пользователи сообщают, что эти данные всегда равны нулю - хотя я вижу, что значения в порядке отправки.
Здесь код отправляющей активности:
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 случая, когда клиенты жалуются, что он не работает (задокументирован в видеозаписях).
Какие-либо предложения?
Я попытался изменить код, чтобы использовать getFloatExtra() вместо getString и проанализировать его на float, и он решил проблему. Я вижу, что это намного эффективнее, но я до сих пор не понимаю, почему оригинальное решение работало на некоторых устройствах, но не на других.
Дело закрыто!
putExtra()
принимает число сfloat
;getFloatExtra()
возвращает число сfloat
. Помимо этого, дополнения не волшебным образом исчезают в вызовахstartActivity()
илиstartActivityForResult()
. Вам нужно выяснить состояния вашего конечного автомата и определить, какой путь вызывает ваше второе действие, где эти дополнения не были бы прикреплены.