2013-01-10 5 views
-1

내 안드로이드 애플리케이션에서 두 가지 액티비티간에 데이터를 전달하려고 시도하지만 앱을 충돌하는 데이터를 보내는 클릭 메서드를 실행 해 봅니다.안드로이드 액티비티간에 데이터 전달

내 계산 결과가 result라는 다른 활동으로 보내려고하는 활동 코드입니다. 보내려는 변수 출력은 두 배입니다.

Intent myIntent = new Intent(BMIMetric.this, result.class); 
BMIMetric.this.startActivity(myIntent); 
myIntent.putExtra("key", output); 

그런 다음 결과 페이지에 당신이 주문 문제가이 코드를

Intent myIntent = getIntent(); 
double output = (Double) getIntent().getExtras().get("Key"); 
+1

정확한 로그가 무엇인지 CatLog에서 알아두면 도움이됩니다.하지만 가치가있는 경우 가져올 때 "키"를 대문자로 설정하고 설정할 때 소문자를 사용합니다. 이런 일이 유인물에 영향을 미치는지 아닌지를 기억하지 마십시오. 그러나 시작할 장소입니다. – Blumer

답변

4

먼저 변수를 취하려합니다 (수정 코드) : 당신이 필요로하는

Intent myIntent = new Intent(BMIMetric.this, result.class); 
myIntent.putExtra("key", output); 
BMIMetric.this.startActivity(myIntent); 

새 액티비티를 시작하기 전에 엑스트라를 설정하십시오.

그런 다음 다른 활동에서 수행하면 기본 데이터 형식에 할당하고 이후

Intent myIntent = getIntent(); 
double output = getDoubleExtra ("key", -1.0); 

getDoubleExtra()이 더 잘 맞는 것 같다.

블머 (Blumer)가 언급했듯이, "key"은 다른 철자법을 사용했습니다. 철자가 똑같은 열쇠가 필요합니다. 그것이 작동하는 방식입니다. 그렇지 않으면 당신은 다른 것을 언급하고 있으며 그것은 발견되지 않을 것입니다.

그리고 getExtras()을 사용하는 경우 - getExtras().get()을 사용하고 키를 찾지 못하면 null이 반환됩니다. 하지만 Double의 당신이

Double doubleObject = null; 
double d = doubleObject; 

당신은 여전히 ​​NullPointerException을 얻을 것이다 할 경우, 현재 자동 상자/언 박스를 할 수 있습니다.

관련 문제