2013-01-21 3 views
0

EditText에서 값을 얻는 데 문제가 있습니다. enter 키를 누른 후에 값을 얻으면 모든 것이 잘 작동합니다. 가상 키보드 바깥을 클릭하면 모든 것을 망칠 수 있습니다. 화면을 누르면 EditText 창에 숫자 "0.00"이 나타나기도하지만 갑자기 오류가 나타납니다. 나는 cena2=12를 설정하면 잘 작동하기 때문에이화면을 가리킨 후 EditText 값을 가져옵니다.

cena2 = Float.valueOf(tvCena2.getText().toString()); 

에 문제가 될 수 있다고 생각합니다.

public boolean dispatchTouchEvent(MotionEvent event) { 
    View v = getCurrentFocus(); 
    boolean ret = super.dispatchTouchEvent(event); 

    if (v instanceof EditText) { 
     View w = getCurrentFocus(); 
     int scrcoords[] = new int[2]; 
     w.getLocationOnScreen(scrcoords); 
     float x = event.getRawX() + w.getLeft() - scrcoords[0]; 
     float y = event.getRawY() + w.getTop() - scrcoords[1]; 

     Log.d("Activity", "Touch event "+event.getRawX()+","+event.getRawY()+" "+x+","+y+" rect "+w.getLeft()+","+w.getTop()+","+w.getRight()+","+w.getBottom()+" coords "+scrcoords[0]+","+scrcoords[1]); 
     if (event.getAction() == MotionEvent.ACTION_UP && (x < w.getLeft() || x >= w.getRight() || y < w.getTop() || y > w.getBottom())) { 

      InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); 
     } 
     if (checkEmpty(tvCena2)) { 
      DecimalFormat df = new DecimalFormat("0.00"); 
      cena2 = Float.valueOf(tvCena2.getText().toString()); 
     // cena2=12; 
      tvCena2.setText(String.valueOf(df.format(cena2))); 
     } else { 
      cena2=0; 
     } 
    } 

로그 :

01-21 16:16:25.797: E/AndroidRuntime(13140): FATAL EXCEPTION: main 
01-21 16:16:25.797: E/AndroidRuntime(13140): java.lang.NumberFormatException 
01-21 16:16:25.797: E/AndroidRuntime(13140): at org.apache.harmony.luni.util.FloatingPointParser.parseFltImpl(Native Method) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:321) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at java.lang.Float.parseFloat(Float.java:323) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at java.lang.Float.valueOf(Float.java:362) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at com.imprezowa.pizza.lukis.GlowneOkno.dispatchTouchEvent(GlowneOkno.java:264) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1695) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2217) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at android.view.ViewRoot.handleMessage(ViewRoot.java:1901) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at android.os.Looper.loop(Looper.java:130) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at android.app.ActivityThread.main(ActivityThread.java:3701) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at java.lang.reflect.Method.invokeNative(Native Method) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at java.lang.reflect.Method.invoke(Method.java:507) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
01-21 16:16:25.797: E/AndroidRuntime(13140): at dalvik.system.NativeStart.main(Native Method) 
+1

오류 로그를 게시하십시오. – GoCrazy

+0

방금 ​​게시했습니다 – Lukis

답변

0

난 당신이 대신 구문 분석의 따라 valueOf 점점 생각

변경

cena2 = Float.valueOf(tvCena2.getText().toString()); 

cena2 = Float.parseFloat(tvCena2.getText().toString()); 

작동해야합니다.

+0

불행히도 도움이되지 않습니다. – Lukis

+0

내가 할 때라도 오류가 있기 때문에 오류가있어 야합니다. cena2 = Float.valueOf (tvCena2.getText(). toString()); cena2 = 12.34; – Lukis

+0

좋아, float 값으로 변경하는 대신'tvCena2.getText(). toString()'의 값만 가져 오십시오. 오류가 발생한 부분을 봅시다. 'Log.i ("Value", tvCena2.getText(). toString())'; – GoCrazy