2012-06-02 2 views
1

내 앱에서 하나의 액티비티에서 다른 액티비티로 인 텐트를 보낼 수 있습니다. 그러나 일부 사용자는 이러한 데이터가 항상 0임을보고합니다. 비록 값이 전송 활동에 문제가없는 것을 볼 수는 있지만. 여기 인 텐트 엑스트라는 일부 장치에서만 작동합니다.

보내는 활동의 코드입니다 :

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

추가 정보로 float 대신 문자열을 사용하는 특별한 이유가 있습니까? 'putExtra()'는'float'을 취합니다; 'getFloatExtra()'는'float'을 반환합니다. 그 외에도, 엑스트라들은'startActivity()'또는'startActivityForResult()'를 호출 할 때 마술처럼 사라지지 않습니다. 상태 머신의 상태를 알아 내고 추가 경로가 첨부되지 않은 두 번째 활동을 호출하는 경로를 결정해야합니다. – CommonsWare

+0

아니요 - 플로트를 사용하지 않을 이유가 없습니다.하지만 차이가 없어야합니다. 두 번째 액티비티가 호출되고 항상 엑스트라가 설정된 곳은 하나뿐입니다. – user1057831

답변

0

getString 대신 getFloatExtra()를 사용하도록 코드를 변경하고이를 float로 구문 분석하여 문제를 해결했습니다. 이 방법이 훨씬 효율적이라는 것을 알았지 만 원래 솔루션이 일부 장치에서는 작동하지만 다른 장치에서는 작동하지 않는 이유는 여전히 이해할 수 없습니다.

사례가 닫혔습니다.