آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل با تابع onTextChanged ادیت تکست

سروش  7 سال پیش  7 سال پیش
0 0

سلام خدمت اساتید و دوستان عزیز...یه مشکلی داشتم دررابطه با تابع onTextChanged  ادیت تکست... این تابع به خوبی کار میکنه فقط وقتی تا ته پاک میکنم و دیت تکست خالی میشه برنامه کرش میکنه و بسته میشه

کد هام به این شکله:

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
tedad = Integer.parseInt(etTedad.getText().toString());
if (etTedad.getText().toString().equals("")){
etTedad.setHint("تعداد ورق را وارد کنید");
}
if (tedad % 500 !=0){
int band = tedad / 500;
int varaghEzafe = tedad % 500;
tv2.setText(band + "بند و"+ varaghEzafe + "ورق");
}else {
int band = tedad / 500;
tv2.setText(band + "بند");
}
}

این هم ارور اندروید استادیو:

08-05 11:49:54.106 30643-30643/ir.soroosh.kaghaz E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NumberFormatException: Invalid int: ""
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:359)
at java.lang.Integer.parseInt(Integer.java:332)
at ir.soroosh.kaghaz.MainActivity$2.onTextChanged(MainActivity.java:65)
at android.widget.TextView.sendOnTextChanged(TextView.java:7231)
at android.widget.TextView.handleTextChanged(TextView.java:7290)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:8880)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:962)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:496)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:212)
at android.text.SpannableStringBuilder.delete(SpannableStringBuilder.java:30)
at android.view.inputmethod.BaseInputConnection.deleteSurroundingText(BaseInputConnection.java:242)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:382)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:77)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)

+1 0
سلام ، خب اونجایی که parseInt کردی ، وقتی جعبه متن خالی میشه نمیتونه تبدیل به int کنه . اول براش شرط بذار که اگه خالی بود ، فلان کار رو بکنه و بپره بیرون . (7 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
سروش  7 سال پیش
0 0

"اول براش شرط بذار که اگه خالی بود ، فلان کار رو بکنه و بپره بیرون"

این رو بصورت کد توضیح میدید؟

پاسخ به سوال 
Reza  7 سال پیش
0 0

سلام

بستگی داره که دقیقا میخوای چکار کنی . ولی تقریبا به این شکله :

 

 @Override
                public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                    if (charSequence.length()==0){
                        etTedad.setHint("تعداد ورق را وارد کنید");
                        // بقیه دستوراتی که لازم داری
                        return;
                    }
                    
                    tedad = Integer.parseInt(etTedad.getText().toString());
                    
                    if (tedad % 500 !=0){
                        int band = tedad / 500;
                        int varaghEzafe = tedad % 500;
                        tv2.setText(band + "بند و"+ varaghEzafe + "ورق");
                    }else {
                        int band = tedad / 500;
                        tv2.setText(band + "بند");
                    }
                }

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .