2012-06-02 49 views
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'。除此之外,extras在调用'startActivity()'或'startActivityForResult()'时不会神奇地消失。您需要计算出状态机的状态,并确定哪些路径正在调用您的第二个活动,而这些额外活动不会被附加。 – CommonsWare

+0

不 - 没有理由不使用浮动 - 但我想这应该没有任何区别。 只有一个地方可以调用第二个活动,并且总是设置额外的。 – user1057831

回答

0

我试着改变代码来使用getFloatExtra()而不是getString并将其解析为一个浮点数,并且它解决了这个问题。我发现这样做效率更高,但我仍然不明白为什么原始解决方案可以在某些设备上运行,而不是在其他设备上运行。

结案!

相关问题