Reputation: 3408
conversion is other class, I'm working in MainActivity
;
when i clear edittext and then enter "-" then it generates error, but when i enter some value and then at first position of edittext then it does not generate error, plz help m attaching my error log with it.
Conversion conversion;
conversion = new Conversion();
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(edittext.length()!=0){
String Result =conversion.temp(spinner1.getSelectedItemPosition(),
spinner2.getSelectedItemPosition(),edittext.getText().toString());
textView.setText(Result);
}
}
This is my function
public String temp(int ddfrom,int ddto,String edittextvalue) {
float s;
float inputValue = Float.parseFloat(edittextvalue);
s = rate*inputValue;
return String.valueOf(s);
}
02-04 12:56:33.029: E/AndroidRuntime(317): Uncaught handler: thread main exiting due to uncaught exception 02-04 12:56:33.119: E/AndroidRuntime(317): java.lang.NumberFormatException: - 02-04 12:56:33.119: E/AndroidRuntime(317): at org.apache.harmony.luni.util.FloatingPointParser.initialParse(FloatingPointParser.java:149) 02-04 12:56:33.119: E/AndroidRuntime(317): at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:319) 02-04 12:56:33.119: E/AndroidRuntime(317): at java.lang.Float.parseFloat(Float.java:288) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.sample.unitconverter.Conversion.timee(Conversion.java:651) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.sample.unitconverter.UnitConverter$6.onTextChanged(UnitConverter.java:397) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.widget.TextView.sendOnTextChanged(TextView.java:6131) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.widget.TextView.handleTextChanged(TextView.java:6172) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:6316) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:889) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:352) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:269) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:432) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:409) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:28) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:578) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:174) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:120) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:231) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:57) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.os.Handler.dispatchMessage(Handler.java:99) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.os.Looper.loop(Looper.java:123) 02-04 12:56:33.119: E/AndroidRuntime(317): at android.app.ActivityThread.main(ActivityThread.java:4363) 02-04 12:56:33.119: E/AndroidRuntime(317): at java.lang.reflect.Method.invokeNative(Native Method) 02-04 12:56:33.119: E/AndroidRuntime(317): at java.lang.reflect.Method.invoke(Method.java:521) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 02-04 12:56:33.119: E/AndroidRuntime(317): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 02-04 12:56:33.119: E/AndroidRuntime(317): at dalvik.system.NativeStart.main(Native Method)
Upvotes: 0
Views: 1817
Reputation: 2054
It is because "-" cannot be parsed to float and you are getting NumberFormatException.
public String temp(int ddfrom,int ddto,String edittextvalue) {
float s;
try {
float inputValue = Float.parseFloat(edittextvalue);
s = rate*inputValue;
return String.valueOf(s);
}
catch (NumberFormatException nfe) {
//Error handling.
}
return null;
}
Upvotes: 1
Reputation: 82938
At very first your method should be
public String temp(int ddfrom,int ddto,String edittextvalue) {
float s;
try {
float inputValue = Float.parseFloat(edittextvalue);
s = rate*inputValue;
return String.valueOf(s);
catch (NumberFormatException nfe) {
//Error handling.
}
return "";
}
And update listener code as
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if(edittext.length()!=0){
if(edittext.length()==1 && "-".equals(edittext.getText().toString())) {
//Nothing to do
} else {
String Result =conversion.temp(spinner1.getSelectedItemPosition(),
spinner2.getSelectedItemPosition(),edittext.getText().toString());
textView.setText(Result);
}
}
Upvotes: 1
Reputation: 7013
if your are using android:inputType="numberDecimal"
doesn't allow negative numbers. In that case you should add: android:inputType="numberDecimal|numberSigned"
That will work in your case
Upvotes: 0
Reputation: 45942
I am not sure what you are doing but you are parsing a float everytime the text is changed in the onTextChanged
function (calling function temp
)
Fix function temp
to return 0 for example when there is a parse error. This is happening because a string "-" will not be parsed as a Float.
public String temp(int ddfrom,int ddto,String edittextvalue) {
try {
float s;
float inputValue = Float.parseFloat(edittextvalue);
s = rate*inputValue;
return s;
} catch(Exception ex) {
return "0";
}
}
Upvotes: 0