-4

플로트 값 "degrees"를 내 레이아웃의 TextView에 문자열로 표시하려하지만, tv.setText (mydegrees)에서 NullPointerException을 수신하려고합니다. float 값을 표시하기 위해 TextView를 가져올 수없는 것처럼 보이지만 사용할 수있는 문자열 값으로 float을 변환하는 수많은 메서드를 시도했습니다. 어떤 도움이라도 대단히 감사하겠습니다!플로트를 문자열로 변환하여 널 포인터 예외 발생

참고 :

<TextView 
android:id="@+id/current_degrees" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:gravity="center_vertical|center" 
android:text="@string/app_name" 
android:textColor="#FFFF00" /> 

자바 코드 : :이 정도는 XML에서 onTouchEvent

텍스트 뷰에 의해 조작

float degrees = (float) -65; 
String mydegrees = String.format("%.2f", degrees) ; 

//... 

public void pushClick(View pushClick) { 
    switch (pushClick.getId()) { 
    case R.id.btn_push: 

     TextView tv = (TextView) findViewById(R.id.current_degrees); 
     tv.setText(mydegrees); 
+6

tv가 'null'이며 도수 문자열과 아무 관련이없는 것 같습니다. – tigrang

+1

당신의 문제 (그것이 무엇이든 당신은 말하지 않습니다)는 플로트를 문자열로 변환하는 것과 아무런 관련이 없습니다. –

+0

XML 코드를 검토 한 결과 동일한 이름의 TextView를 테스팅을 위해 동일한 레이아웃에서 나중에 사용하면서 TextView의 id가 오타를 발견했습니다. 오타를 수정하면 NPE가 해결되었습니다. – n00bdev

답변

0

를 사용 편집 : @Jake King으로 언급했듯이, 이전의 대답에서는 귀하의 mydegree 회원이 String 인스턴스라는 세부 사항에주의를 기울이지 않았습니다.

이렇게하면 NPE을 얻는 유일한 이유는 tv TextView이 null이라는 것입니다.

활동/렌더러 /보기에 사용하는 레이아웃 xml 파일을 확인하고 TextView 또는 확장명이 @+id/current_degrees인지 확인하십시오.

또한 귀하의 제목은 매우 오도 된 것입니다. 위에서 설명한대로 float을 선언하고 초기화 한 경우 NullPointerException을 사용할 수 없습니다.

+3

코드에서 mydegrees가 이미 String이므로. –

+0

당신은 맞습니다. '제이크 킹'입니다. 나는 그것을 놓쳤습니다. 주목 해 주셔서 고마워, 나는 내 대답을 바꿀거야. – rekaszeru

+0

+1 예 : – Lucifer

-1

간단한 ..이

tv.setText(degrees+""); //Degrees is the float value 
+0

문제가되지 않으며 소수점 이하 2 자리로 배열되어야합니다. – tigrang

1

tigrang이 지적했듯이 문제는 float를 String으로 변환하지 않습니다. 당신이 가지고있는 것은 잘 작동해야합니다. 문제는 사용자가 제공 한 ID가 없기 때문에 이 어떤 이유로 든 null 값을 반환하고 있다는 것입니다. ID를 올바르게 입력하고 작업을 수행하기 전에 올바른 TextView 인스턴스를 얻고 있는지 확인하십시오.

+0

위에서 언급 한 것처럼 TextView ID의 오타가있는 문제를 발견하고 올바른 것으로 만들었습니다. 그것을 깨닫지 못하고, 나는 다른 layout에서 같은 'current_degrees'id를 이미 사용했기 때문에 TextView를 오류없이 그 id에 매핑 할 수있었습니다. – n00bdev

0

float 값을 string으로 변환하십시오.