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

خالی بودن EditText

Ghost  11 سال پیش  11 سال پیش
+1 0

سلام دوستان ! من دارم روی یه پروژه ای کار میکنم ایشالا امروز تموم میشه میدم بازار !

خب یه سوالی داشتم ! توی این نرم افزار من تقریبا 5 تا EditText وجود داره که کاربر باید توش عدد وارد کنه !

خب حالا اگه یدونه از این ادیت تکست ها خالی باشه برنامه کرش میکنه ! باید همه ادیت تکست ها پر باشه و یک عددی درونش باشه و اون عدد به یک Activity دیگه انتقال پیدا کنه و روی اون عدد کاربر یک محاسبه ای بشه و درجایی مثل TextView عدد محاسبه شده نمایش داده بشه !

خب حالا چیکار کنم تا اگه کاربر توی یک ادیت تکست عددی نداده بود برنامه کرش نکنه ! آخه همه ادیت تکست ها اجباری نیست توش باشه و باید بعضی هاش خالی باشه !

ممنون میشم راهنمایی کنید و بگید چیکار کنم !

+1 0
خود ادیت تکست مهم نیست. مهم متغیری هست که با مقدار وارد شده کاربر در ادیت تکست مقداردهی میشه.شما باید برای اون متغیر فکری بکنی. باید همه متغیرهایی که در برنامه استفاده میکنی برای اطمینان مقداردهی اولیه کنی که احیانا Null نباشن. باید به خطایی که موقع کرش کردن در لوگ کت ظاهر میشه دقت کنی ببینی از چه نوع خطایی هست. اگه NullpoitException باشه صد در صد توی مقدار دهی اولیه متغیرها مشکل داری. باید الگوریتمی برای حالتی که کاربر توی ادیت تکست چیزی وارد نکرده در نظر بگیری که متغیر مربوطه اش با چه چیزی مقداری دهی بشه. اگه اطلاعات بیشتری بدی شاید بشه بهتر راهنمایی کرد. البته خود ادیت تکست هم میشه مقدادهی اولیه کرد و مقدار صفر توش در نظر گرفت. اگه کاربر چیزی وارد کرد که ازش استفاده میکنی و اگر هم توی ادیت تکست چیزی وارد نکرد که مقدار اولیه اش برابر صفر خواهد بود. حالا گیرم اگه محاسباتی که انجام میدی مثلا یه مقداری تقسیم بر مقدار وارد شده در ادیت تکست میشه اگه مقدار اولیه ادیت تکست صفر باشه خوب خطای تقسیم بر صفر بوجود میاد. شما اول باید دقیقا مشخص کنی که کرشت از چه نوعی هست. (11 سال پیش)
0 0
من هنوز محاسبه ای انجام ندادم ! فقط اطلاعات رو انتقال دادم به یک Activity دیگه ! و هنوز اطلاعات رو نگرفتم ! خطایی هم که میده از نوع NullpoitException نیست و از نوع FATAL Exception هست ! خب اگه اطلاعات دیگه ای لازمه بگید تا بهتون بدم ! ممنون از اینکه جواب دادید امیدوار ام حلش کنیم ! (11 سال پیش)
0 0
میگم دوستان اگه میخواهید پروژه رو آپلود کنم و لینک کنم بدم برسی کنید ! چیکار کنم ؟ (11 سال پیش)
+1 0
آپلود کن ، ولی الان شرکت هستم ، شب جوابت رو می دم (11 سال پیش)
0 0
@Hossein.Kurd ممنون دوست عزیز ! فقط شب یکم دیره ! میخوام زودی تموم کنم چون کار دیگه ای نداره ! همش تکمیله ! به هر حال من آپلود کردم اگه کس دیگه ای بود بگه پروژه رو بهش بدم ! موفق باشید (11 سال پیش)
0 0
یه چیزی رو یافتم ! شما اگه دقت کنی توی پروژه استاد که بود TestActivitys اگه یه مقدار خالی بدی پروژه بدون هیچ خطایی کار میکنه و اصلا کرشی صورت نمیگیره و txtCaption هم Set Text میشه با یه چیز خالی ! همین یعنی اینکه من یه جای کار خطا کردم ! بازم امتحان میکنم خبرش رو میدم ! (11 سال پیش)
 برای این سوال 8 پاسخ وجود دارد.
پاسخ به سوال 
بانوی شرقی  11 سال پیش
+1 0

EditText et = (EditText) findViewById(R.id.edtMessage);
                String text = et.getText().toString();

                if (text.matches(""))
                {
                    Toast.makeText(getApplicationContext(), "شما هنوز پیامی درج نکردید !!!", Toast.LENGTH_LONG).show();
                }
+1 0
ببینید چنین چیزی به دردتون میخوره (11 سال پیش)
0 0
ممنون از پاسخگویی شما ولی همونجور که گفتم همه ادیت تکست ها اجباری نیست و اختیاری هست ! یعنی ممنکه از این 5 تا ادیت تکست کاربر فقط یکیش رو پر کنه ممکنه 5 تاش رو پرکنه ! و اختیاریه ! حالا چیکار کنم ؟ (11 سال پیش)
+1 0
میدونم.اینو از یه نمونه پروژه نوشتم براتون. شما دستور داخل if رو تغییر بدید (11 سال پیش)
0 0
آره ! فکر خوبیه ! فقط matches این وسط چیه که ازش خطا میگیره ؟ (11 سال پیش)
0 0
یه تابع س برای رشته ها. از اسمش که مشخصه چیکار میکنه. میگه اگه رشته با '' مچ بود ، یعنی اینکه رشته مون خالی باشه (11 سال پیش)
0 0
یه تابع س برای رشته ها. از اسمش که مشخصه چیکار میکنه. میگه اگه رشته با ''" مچ بود ، یعنی اینکه رشته مون خالی باشه (11 سال پیش)
پاسخ به سوال 
Hossein Kurd  11 سال پیش
+2 0

بجای matches می توین بزنی equals یا بنویسی text.lenght()<1 ، یا اصلا توی خاصیت 

edt.addTextChangedListener(new TextWatcher() {

   public void afterTextChanged(Editable s) {}

   public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
   }

   public void onTextChanged(CharSequence s, int start,
     int before, int count) {
      Field2.setText("");
   }
  });

توی بخش onTextChanged تعیین کنی اگر EditText خالی بود :

edt.setTexr("0");

0 0
من دقیقا دستور بانوی شرقی رو کپی کردم و فقط مقدارش رو عوض کردم ! ولی بازم کرش کردم ! نمیدونم باید دستورات رو کجا بنویسم ! نکنه باید دستورات رو هنگام ارسال اطلاعات هم بنویسم ؟ آخه من فقط هنگام خوندن اطلاعات دستورات رو نوشتم ! میشه بیشتر توضیح بدید دوستان :) (11 سال پیش)
+1 0
از این روشی که گفتم استفاده کن و مقدار اولیه رو هم 0 بذار (اگر مقداد ورودی int هست) ، تست کن (11 سال پیش)
0 0
بازم کرش ! حالا که اینجوری شد من یه جایی از کد خطا کردم ! ولی هرچی میگردم پیدا نمیکنم ! براداشتم دقیقا کدهای استاد توی بخش TestActivitys رو کپی کردم ! ولی بازم کرش کردم ! ای خدا ! چیکار کنم حالا ؟ (11 سال پیش)
+1 0
هنگام کرش چه پیغامی رو توی لاگ کت نشون می ده؟ (11 سال پیش)
0 0
خطای FATAL Exception ! دقیقا موقع خوندن اطلاعات ادیت تکست ! (11 سال پیش)
+1 0
edit text رو معرفی کردی ؟ findviewbyid ؟ (11 سال پیش)
0 0
ببین دقیقا به کدوم خط ایراد می گیره و اون خط چیه ؟ (11 سال پیش)
پاسخ به سوال 
Ghost  11 سال پیش
0 0

@Hossein.Kurd بله ! ادیت تکست رو معرفی کردم ! دارم میگم سورس استاد رو کپی کردم ! دقیقا از این خط ایراد میگیره :

 int userAge = Integer.parseInt(edtsad.getText().toString());
Intent intent = new Intent(ActivitySecond.this, ActivityBeshmar.class);
intent.putExtra("USER_AGE", userAge);
ActivitySecond.this.startActivity(intent);

0 0
خب وقتی چیزی توش نیست چطور مقدار رو برگردونه ؟ مقدار اولیه 0 و کاری رو هم که گفتم انجام بده همچنین edittext مقادیر ورودیش number باشه تا کاربر نتونه مقدار غیر عددی وارد کنه (11 سال پیش)
0 0
سورس رو تعویض کردم ! شما به سورس بالا دقت کن ! کپی پیست سورس استاده دیگه ! الان اینجا چه مشکلی داره توی این سورس ! (11 سال پیش)
0 0
اکتیویتی فعلی ActivitySecond هست ؟ و میخواهی به ActivityBeshmar بری؟ (11 سال پیش)
0 0
دقیقا زدی تو خال ! ActivitySecond دقیقا Activity فعلی هست و میخوام کوچ کنم به ActivityBeshmar و اطلاعات وارد شده رو پس از یکسری محاسبه توی ActivityBeshmar نشون بدم ! یافتی مشکل رو ؟ (11 سال پیش)
پاسخ به سوال 
Hossein Kurd  11 سال پیش
+1 0

ابتدا edtsad.getText().toString() رو بریز توی متغیر String بعد بگو اگر خالی بود اون رو برابر 0 قرار بده و ادامه ماجرا :

                String strUserAge = edtsad.getText().toString();
if(strUserAge.equals("")){ strUserAge = "0" } int userAge = Integer.parseInt(strUserAge); Intent intent = new Intent(ActivitySecond.this, ActivityBeshmar.class); intent.putExtra("USER_AGE", userAge); ActivitySecond.this.startActivity(intent);

چقدر تو تنبلی

0 0
برارد عزیز شما تاحالا به پروژه TestActivity استاد دقت کردی ؟ من دقیقا اون پروژه رو کد هاش رو کپی پیست کردم ! درست؟ خب کرش کردم ! درصوتی که توی پروژه استاد اصلا کرشی توی کار نبود ! بود ؟ نبود ! الان حتی با کد شما هم کار نمیده ! مشکل از جای دیگه ای ! (11 سال پیش)
0 0
خب همینه ، کاری رو که خودت انجام ندی نمی تونی 100% سر در بیاری . خودت انجام بده ؛ از اول (11 سال پیش)
0 0
منم خودم انجام دادم ! دیدم کرش کردم ! تا اینکه نیم ساعت پیش پروژه استاد رو کپی کردم ببینم حل میشه بازم نشد ! (11 سال پیش)
+1 0
دقیقا به چی ایراد می گیره؟ پروژه رو آپلود کن و لاگ کامل خطا رو بذار (11 سال پیش)
+2 0
سلام شما مگه مشکلتون این نیست که وقتی EditText خالی باشه برنامه کرش می کنه ؟ (11 سال پیش)
+1 0
مشکل اینجاست که نمی دونه مشکل از کجاست (11 سال پیش)
0 0
الان مشکل ام این شده که چه پر باشه چه خالی کرش میکنه ! (11 سال پیش)
0 0
تو هنوز لاگ خطا رو نذاشتی ببینیم در ضمن محتوای فایل xml اکتیویتی جاری بعلانه نحوه تعریف کردن edittext رو بذار شاید نامش رو توی findviewbyid اشتباه دادی یا نام تکراریه (11 سال پیش)
0 0
پر باشه دیگه چرا ؟؟ مشکل خالی بودنش و اینکه اگه خالی باشه رو میتونم راهنماییتون کنم (11 سال پیش)
0 0
والا اصلا نمیدونم ! اینقدر Activity تو Activity شده که اصلا چیزی معلوم نیست ! پروژه رو آپلود کنم ببینید ؟ (11 سال پیش)
پاسخ به سوال 
Ghost  11 سال پیش
0 0

اینم   LogCat  این بار از ActivityBeshmar خطا گرفت :

0 0
خدایا از دست این ، خط 23 از ActivityBeshmar چیه؟ (11 سال پیش)
0 0
خط 23 ActivityBeshmar هست : txtCaption.setText (userAge ! همین ! (11 سال پیش)
پاسخ به سوال 
Hossein Kurd  11 سال پیش
0 0

خب userAge کدومه ؟ همین کدی که دادی یا از جایی دیگه می آد ؟ اینو ابتدا مشخص کن

بعد این رو بزن :

 txtCaption.setText ("" + userAge);
0 0
متوجه نشدم برادر ! میشه واضح تر بگی ؟ ممنون (11 سال پیش)
0 0
پروژه رو اپلود کنید ببینم (11 سال پیش)
0 0
برادر لینک رو برات ارسال کردم ! لطفا پیام خصوصی هات رو برسی کن ! (11 سال پیش)
0 0
userAge رو خالی توی پرانتز ننویس.همونطور که اقای کرد گفتن userAge رو توی پرانتز + یک String با مقدار خالی کن (11 سال پیش)
0 0
من فهمیدم مشکل از اینجا نیست ! چون حتی پروژه استاد توی پروژه من کار نمیده ! احتمال زیاد مال اندروید مانیفست یا.. هست ! (11 سال پیش)
0 0
راستی اکتیویتی ها رو توی منیفست تعریف کردی ؟ (11 سال پیش)
0 0
@مهدی خسروی : آره ! توی منیفست هم تعریف کردم ! اصلا معلوم نیست چی به چیه ! (11 سال پیش)
0 0
اگه دوست داشتی پروژتو بفرست برات برسیش کنم ببینم میتونم چیزی بفهمم یا نه ... (11 سال پیش)
0 0
@mohsen-jj و @مهدی خسروی : بلاخره چیزی فهمیدید یا نه ؟ (11 سال پیش)
0 0
میگم اینکه یدونه EditText بیشتر نیست گفتید چنتا هست (11 سال پیش)
0 0
خب اونا رو پاک کردم تا بهتر بتونم حل کنم مشکل رو ! راستی ایدم خوبه ؟ (11 سال پیش)
0 0
ربطی به منیفست نداره داره به خط 23 از اکتیویتی مقصد ایراد می گیره ، مقدار userAge رو توی اکتیویتی مقصد چطور بدست آوردی (11 سال پیش)
پاسخ به سوال 
mohsen-jj  11 سال پیش
+2 0

دوست عزیز بیشتر دقت کنید !! :| توی کلاس ActivityBeshmar قسمت setContentView() شما form 7 رو انتخاب کردید و بعد توی همین کلاس تکست ویو به اسم txtCaption ساختید  ، درحالیکه txtCaption اصلا داخل form7 وجود نداره ! احتمالا منظورتون form4 بوده چون این تکست ویو توش هست .

راستی اگه میخوای بررسی کنی که editText خالی هست یا نه از تابع زیر استفاده کن اگه true برگردوند معلومه که editText خالیه .

 privateboolean isEmpty(EditText etText){
return etText.getText().toString().trim().length()==0;
}
0 0
ایول برادر ! عجب خنگی ام من ! صبح تا حالا درگیرش شدم ! حالا در کل به نظرت ایدش خوبه ؟ (11 سال پیش)
0 0
درست میگن.گفتی استالتو از فرم 7 بگیر که توش یه تکست ویو هست با id ـه txtCaption در حالی در فرم 7 همچین چیزی وجود نداره.پروژه رو باز سازی و برات پ.خ کردم (11 سال پیش)
+2 0
خب من هم از ظهر دارم همینو می گممممممممممممممممممممممممممممممممممم پست سوم رو ببین (11 سال پیش)
0 0
ممنون مهدی جان ! دانلود کردم وایمپورت کردم ! نگفتید ایدش خوب بود ! نکنه خوب نیست ؟ (11 سال پیش)
+1 0
برا شروع خوبه :) اونم تو این وضعیت کمبود ایده ! همیشه وقتی پروژه ت ارور میده اول از همه برید سراغ اشتباه های رایج مثل همین اشتباه خودتون یا تعریف نکردن کلاس در منیفست . (11 سال پیش)
+1 0
اقای کرد دوستمون یکم بی دقت و عجول هستن متاسفانه :( (11 سال پیش)
0 0
ایده خوبی هست.امیدوارم موفق باشی.ولی یه جوری درستش کن که 4 روز بعد که حرفه ای تر شدی وقتی کسی ازت نمونه کار خواست و تو خواستی این برنامه رو معرفی کنی خجالت نکشی.یعنی یه برنامه ای بساز (یا همین برنامه رو جوری بساز) که پس فردا با افتخار به همه معرفیش کنی و بگی "ای ملت، این برنامه مال منه".یعنی هروقت اسمت میاد همه با عنوان یه برنامه نویس خوب و به نیکی ازت یاد کنن.پس یا همین برنامه رو به بهترین نحو ممکن درست کن یا روی یک ایده نو و بکر فکر کن (11 سال پیش)
+2 0
بی دقت ، عجول و تنبل ؛ من هم مدتی کد آماده می گرفتم تنبل شده بودم فقط کپی پیست می کردم اما الان نه (11 سال پیش)
+1 0
@ مهدی خسروی : اما من نظرم چیز دیگه ای هست ! برنامه نویس اگه انیشتین هم باشه باید به عنوان اولین برنامه یه چیز خیلی سبک و کوچولو بسازه ! این بود عقیده من (11 سال پیش)
+1 0
گاست درست می گه ، سنگ بزرگ نشانه نزدنه (11 سال پیش)
+1 0
دوست خوبم بهتره در نامگذاری اکتیویتی به جای ActivityBeshmar از کلمه ActivityCount استفاده کنی. یاد درس کدکانونشن استاد افتادم. (11 سال پیش)
+1 0
از همین الان که شروع کردی یاد بگیر که نامگذاری هات اصولی و استاندارد باشه تا به حالت استاندارد عادت کنی. اگه از الان به فینگلیش عادت کنی تا آخر روی همین عادت میمونی و اگه واقعا قصد جدی برای ادامه دادن به برنامه نویسی داری فردا که ایشالا وارد کارهای تیمی شدی با بقیه برنامه نویس های استاندارد به مشکل برمیخوری. (11 سال پیش)
پاسخ به سوال 
Ghost  11 سال پیش
0 0

دوستان سلام ! یه سوال کوچولوی دیگه دارم گفتم همین جا بپرسم دیگه :

من یک فیلدی دارم به اسم Conter و 4 تا گزینه ! وقتی کاربر روی گزینه اول کلیک کرد Conter باید با عدد 1 جمع بشه و بره توی Activity بعدی !

و اگه کاربر روی گزینه دوم کلیک کرد Conter باید با عدد 2 جمع بشه و بره توی Activity بعدی !

و اگه کاربر روی گزینه سوم کلیک کرد Conter باید با عدد 3 جمع بشه و بره توی Activity بعدی !

و اگه کاربر روی گزینه چهار کلیک کرد Conter باید با عدد 4 جمع بشه و بره توی Activity بعدی !

و حالا به فرض کاربر روی گزینه اول کلیک کرده و 1 ریخه شده توی  Conter و یوزر به Activity بعدی رفت :

اگه یوزر تصمیم گرفت برگرده و گزینه رو تصحیح کنه و گزینه دوم رو انتخاب کنه 1 با 2 جمع میشه و میشه 3 ! خب این غلطه !

چیکار کنم الان که دیگه 1 با دو جمع نشه ؟

+1 0
خب شما counter رو ثابت نگه دار و تغییرش نده ؛ یک متغیر داشته باش و اون رو اینطور مقدارده کن تا در واقع همیشه مقدار counter از دیتابیس یا هرجایی که خودت می دونی برداشته بشه و تغییر نکنه int sum = counter + value; لینک end (11 سال پیش)

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