Android Intent extras仅在某些设备上工作

Android Intent extras仅在某些设备上工作,android,android-intent,extras,Android,Android Intent,Extras,在我的应用程序中,我从一个活动向另一个活动发送一些额外的意图。但是一些用户报告说,这些数据总是为零——尽管我可以在发送活动中看到值是正常的 以下是发送活动的代码: Intent intent = new Intent(); intent.setClass(waypointListView.this, addWaypointActivity.class); intent.putExtra("latitude", String.format("%9.6f", globLatitude)); inte

在我的应用程序中,我从一个活动向另一个活动发送一些额外的意图。但是一些用户报告说,这些数据总是为零——尽管我可以在发送活动中看到值是正常的

以下是发送活动的代码:

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;
}
这是在新活动中的解读方式:

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()
接受一个
浮点值
getFloatExtra()
返回一个
float
。除此之外,在调用
startActivity()
startActivityForResult()
时,额外功能不会神奇地消失。你需要计算出你的状态机的状态,并确定调用第二个活动的路径,而这些额外的活动是不会被附加的。不-没有理由不使用float-但我想这不会有任何区别。只有一个地方可以调用第二个活动,并且总是设置了额外活动。