Persian Software Engineers
سلام دوستان یه فرم نظر سنجی درست کردیم که نظرات دوستان رو در مورد کانال و بهتر شدنش بدونیم لطفا همه شرکت کنین ممنونم http://goo.gl/forms/uZLR9MrMfv
با تشکر از خانم مقاری بابت آموزش خوبشون طبق نظر سنجی که از دوستان انجام شد قرار شد آموزش ها به صورت جلسه ای و پی دی اف باشه ولی هر دفعه خیلی از دوستان لیو می دن ! ما طبق نظر اکثریت جلو رفتیم و همینجوریم ادامه میدیم ! اگر نظر دوستان در مورد گذاشتن دوره آموزشی ساخت کتاب با b4a موافقه در فرم بالا و یا به صفحه ی شخصی من @mohamadghaffari پیام بدن اگر تعداد نظرات مثبت زیاد بود حتما قرار داده میشه ممنون از حمایتتون
@androiddevelop
@androiddevelop
بالاخره نسخه جدید تلگرام اومد ! حتما نصب کنین تا بتونین وارد گروه کانال بشین .
@androiddevelop
از جمله تغییرات ورژن جدید :
●هزار نفره شدن گروه و چند ادمینه شدن .
●اضافه شدن دکمه اشتراگ گذاری سریع در کنار هر مطلب کانال
نکته:اگر یک گروه که الان 200 نفرس رو تبدیل به Supergroup و هزار نفرش کنین اعضا به محتوای قبلی فقط دسترسی دارن و باید نسخه جدید رو برای دسترسی به مطالب جدید گروه نصب کنند .
@androiddevelop
دانلود از پلی استور:
https://play.google.com/store/apps/details?id=org.telegram.messenger
@androiddevelop
از جمله تغییرات ورژن جدید :
●هزار نفره شدن گروه و چند ادمینه شدن .
●اضافه شدن دکمه اشتراگ گذاری سریع در کنار هر مطلب کانال
نکته:اگر یک گروه که الان 200 نفرس رو تبدیل به Supergroup و هزار نفرش کنین اعضا به محتوای قبلی فقط دسترسی دارن و باید نسخه جدید رو برای دسترسی به مطالب جدید گروه نصب کنند .
@androiddevelop
دانلود از پلی استور:
https://play.google.com/store/apps/details?id=org.telegram.messenger
Google Play
Telegram - Apps on Google Play
Telegram is a messaging app with a focus on speed and security.
Persian Software Engineers
Telegram@androiddevelop.apk
فایل Apk نسخه ی جدید تلگرام .اختصاصی از Android Develop لطفا تو گروهاتون فروارد کنین و اعضا حتما همه نصب کنند تا بتونن وارد گروه بشن .
گروه تخصصی و پرسش و پاسخ اندروید کانال
لینک ورود:
https://telegram.me/joinchat/B1f7EQKuZgkzleEuiXdD6w
توجه:برای عضویت حتما تلگرام خودتونو آپدیت کنین .
قوانین و نکات قابل توجه :
1-لطفا اول به هر مشکلی ک خوردین در گوگل سرچ کنین و اگر به نتیجه نرسیدین در گروه سوالتونو مطرح کنین و صبر کنین تا دوستان جواب بدن.
2-هر گونه تبلیغات در گروه ممنوع می باشد .
3-سوالاتو در قالب یک پیام و با هشتگ #سوال ارسال کنین تا هم باعث اسپم شدن گروه نشین هم سوال و جواب های درست خودشون یه منبع آموزنده و مفید برای بقیه اعضا می تونه باشه.جواب ها هم با هشتگ #پاسخ گذاشته بشه.
4-حتما برنامه نویسان محترم هم بیان تا بتونن به دوستان کمک کنن و این نکته رو در نظر داشته باشین که دوستان وظیفه پاسخ گویی ندارن و لطف می کنن پاسخ میدن !
انشا... گروه هم آموزنده و مفید باشه و همه دوستان قوانین رو رعایت کنند! موفق باشین .
لینک ورود:
https://telegram.me/joinchat/B1f7EQKuZgkzleEuiXdD6w
توجه:برای عضویت حتما تلگرام خودتونو آپدیت کنین .
قوانین و نکات قابل توجه :
1-لطفا اول به هر مشکلی ک خوردین در گوگل سرچ کنین و اگر به نتیجه نرسیدین در گروه سوالتونو مطرح کنین و صبر کنین تا دوستان جواب بدن.
2-هر گونه تبلیغات در گروه ممنوع می باشد .
3-سوالاتو در قالب یک پیام و با هشتگ #سوال ارسال کنین تا هم باعث اسپم شدن گروه نشین هم سوال و جواب های درست خودشون یه منبع آموزنده و مفید برای بقیه اعضا می تونه باشه.جواب ها هم با هشتگ #پاسخ گذاشته بشه.
4-حتما برنامه نویسان محترم هم بیان تا بتونن به دوستان کمک کنن و این نکته رو در نظر داشته باشین که دوستان وظیفه پاسخ گویی ندارن و لطف می کنن پاسخ میدن !
انشا... گروه هم آموزنده و مفید باشه و همه دوستان قوانین رو رعایت کنند! موفق باشین .
سلام دوستان جدید خوش اومدین مطالب قبلی در
@androidi_bot
موجود است و در مورد آموزش ها چون هر آموزش اختصاصی است واقعا زمان بره لطفا صبور باشین ! آموزش بعدی امروز قرار داده میشه در مورد عیب یابی و بررسی دلایل force close دادن برنامه ها .
@androidi_bot
موجود است و در مورد آموزش ها چون هر آموزش اختصاصی است واقعا زمان بره لطفا صبور باشین ! آموزش بعدی امروز قرار داده میشه در مورد عیب یابی و بررسی دلایل force close دادن برنامه ها .
دوستان لطفا همه تلگرام خودتونو اپدیت کنین تا دقایقی دیگر گروه تبدیل به سوپر گروپ میشه .و فقط افرادی ک آپدیته تلگرامشون می تونن دسترسی داشته باشن .
از مزایای سوپر گروپ :
حذف کردن چتای اضافه برای همه اعضا یعنی یه پیامو ک مدیر پاک کنه برا همه پاک میشه و فقط مطالب مفید می مونه .
2- بلک لیست :
افراد مخرب وارد بلک لیست میشن و دیگ با لینکم به گروه دسترسی ندارن .
3-گروه پیشفرض Mute میشه .
4-افراد جدید به مطالب قبلی دسترسی دارن کاملا .
از مزایای سوپر گروپ :
حذف کردن چتای اضافه برای همه اعضا یعنی یه پیامو ک مدیر پاک کنه برا همه پاک میشه و فقط مطالب مفید می مونه .
2- بلک لیست :
افراد مخرب وارد بلک لیست میشن و دیگ با لینکم به گروه دسترسی ندارن .
3-گروه پیشفرض Mute میشه .
4-افراد جدید به مطالب قبلی دسترسی دارن کاملا .
گروه تبدیل به سوپر گروپ شد !
لینک جدید :
https://telegram.me/joinchat/B1f7ETv_ZoJDk2dr0ES0rQ
در صورت عدم رعایت قوانین بدون اخطار وارد بلک لیست میشین ! پس لطفا قوانینو رعایت کنین ممنون .مطالب اضافه هم پاک شدند.
لینک جدید :
https://telegram.me/joinchat/B1f7ETv_ZoJDk2dr0ES0rQ
در صورت عدم رعایت قوانین بدون اخطار وارد بلک لیست میشین ! پس لطفا قوانینو رعایت کنین ممنون .مطالب اضافه هم پاک شدند.
سلام شرمنده دوستان که دیر شد واقعا چند ساعته دارم برای مقاله کار می کنم و الان تقریبا به سطح مطلوب رسید . فقط لطفا هنگام گذاشته شدن مقاله لیو ندین و گروه رو mute کنین چون ما داریم رایگان برای شما زحمت می کشیم شما هم ما رو حمایت کنین با معرفی کردن به دوستان و لیو ندادن !
یکی از مشکلات بزرگ برنامه نویسان به خصوص برنامه نویسان اندروید دادن force close توسط برنامه شان است. ! این ارور در زمان Runtime اتفاق میافتد یعنی در هنگام اجرای برنامه و برای همین handle کردنش سخت تره مخصوصا برای افراد تازه کار همچنین ممکنه فقط در بعضی گوشی ها مخصوصا گوشی های با رم پایین برنامتون force close بشه ! و حتی خودتون خبر نداشته باشین . اما همه ی این موارد رو میشه مدیریت کرد که در ادامه توضیح می دیم .
دلیل اول که بررسی می کنیم (LargeHeap ) : در قسمت #اعماق_اندروید در مورد Stack و پشته صحبت کردیم و نحوه ی اختصاص دادن استک های جدا به هر اکتویتی رو گفتیم . همین پشته یکی از دلایل force close شدن برنامه ما در گوشی های با رم پایین است . که خودم ماه ها این مشکل رو داشتم و بالاخره پیدا کردم دلیلشو ! اگر در یک اکتویتیون عکسهای زیادی رو بذارین یا حجم هر عکس زیاد باشه در گوشی های با رم پایین معمولا و یا در نسخه های اندروید مختلف ! چون به هر دو مورد بستگی داره برنامتون وقتی وارد اون اکتویتی میشین force close میشه و شما هیچ ایده ای برای حل این مشکل ندارین. دلیلش اینه که این عکس ها یا عکس باعث پر شدن استک اختصاص یافته به اون اکتویتی میشه و خود سیستم عامل برنامتونو می بنده تا به خودش فشار نیاد ! (دستش درد نکنه :) ) حالا شما دو راه دارین :1- همه یعکس هاتونو ریسایز کنین و حجمش رو بیارین پایین من برنامه ی AnyPic Image Resizer رو به شما پیشنهاد می کنم. چون خودم راضیم . و این راه اصولیش هست .2-شما مجبورین به دلایل مختلف همین سایز رو داشته باشین یا با پایین آوردن حجم ها بازم ارور پا برجاست ! حالا کارهای زیر رو انجام بدین ! :
1-وارد AndroidManifest.xml بشین و در تگ <application> بیاین android:largeHeap="true" رو اضافه کنین . توجه داشته باشین برای دستگاه های با Api Level +11 فقط این ویژگی کار می کنه .
1-وارد AndroidManifest.xml بشین و در تگ <application> بیاین android:largeHeap="true" رو اضافه کنین . توجه داشته باشین برای دستگاه های با Api Level +11 فقط این ویژگی کار می کنه .
دلایلی که این کار اصولی نیست اینه :
1-هیچ تضمینی که مقدار Heap یعنی استک شما چه مقدار افزایش بیابه نیست ! .
2-شما یا این کار سیستم عامل رو مجبور می کنین که برنامه های دیگه رو که در رم هستن رو ببنده پروسشون رو تا رم مورد نیاز برای برنامه ی شما آزاد بشه !
3-ممکنه بعدا دسترسی ای برای این موضوع جداگونه اضافه بشه و یا کابر موقع نصب بهش اخطارداده بشه .
اگر چاره ای نبود این کارو بکنین ولی در انتها ما روشی رو برای بهبود رم توسط دیباگ کردن برنامه رو بهتون می گیم.
1-هیچ تضمینی که مقدار Heap یعنی استک شما چه مقدار افزایش بیابه نیست ! .
2-شما یا این کار سیستم عامل رو مجبور می کنین که برنامه های دیگه رو که در رم هستن رو ببنده پروسشون رو تا رم مورد نیاز برای برنامه ی شما آزاد بشه !
3-ممکنه بعدا دسترسی ای برای این موضوع جداگونه اضافه بشه و یا کابر موقع نصب بهش اخطارداده بشه .
اگر چاره ای نبود این کارو بکنین ولی در انتها ما روشی رو برای بهبود رم توسط دیباگ کردن برنامه رو بهتون می گیم.
2 -دومین مشکلی که می تونه باعث force close شدن برنامتون بشه Intent ایه که مشکل داره !
می دونین که یکی از وظایف Intent ها تبادل اطلاعات بین اکتویتی هاست حالا اگر در اکتیویتی اول اطلاعاتی ر به دومی بخواین بفرستین و درست نفرستین برنامتون force close میشه نمونه عملی و روش حل :
کد اشتباه
اکتویتی اول :
String resultString = Double.toString(result);
Bundle packet = new Bundle();
packet.putString("giveResults", resultString);
Intent a = new Intent(MainActivity.this, Display.class);
startActivity(a);
اکتویتی دوم :
Bundle getPacket = getIntent().getExtras();
result = getPacket.getString("giveResults");
tvResult.setText(result);
در اینجا در اکتویتی اول یک Bundle تعریف شده و یه Instance ازش ساخته شده و سپس در اون یه رشته وارد شده. Bundle مثل یه بقچه می مونه که شما اطلاعاتو به روش key/value توش می ریزی (روش key/value یک روش ذخیره سازی اطلاعاته که با فراخوانی key که همون شناسه اطلاعاته مورد نظره value یعنی مقدار اون داده برگشت داده میشه است در SharedPreferences هم ازش استفاده می شه ). و در اکتویتی دوم میای از اون بقچه برش میداری ! حالا اشتباه کجاست ؟ getIntent().getExtras(); یعنی تمام اینت ها رو بگیر و سپس داخل Extra هاشو نگاه کن ! اما ما اطلاعاتو تو Bundle ریختیم اما موقع استارت Intent بهش پاس نکردیم. تا بتونیم از ش استفاده کنیم و شکل صحیح به صورت زیر خواهد بود.
Intent a = new Intent(MainActivity.this, Display.class);
a.putExtras("giveResults",packet );
startActivity(a);
که به وسیله ی putExtra میتونیم تو اکتیویتی دوم getExtra کنیم :)
می دونین که یکی از وظایف Intent ها تبادل اطلاعات بین اکتویتی هاست حالا اگر در اکتیویتی اول اطلاعاتی ر به دومی بخواین بفرستین و درست نفرستین برنامتون force close میشه نمونه عملی و روش حل :
کد اشتباه
اکتویتی اول :
String resultString = Double.toString(result);
Bundle packet = new Bundle();
packet.putString("giveResults", resultString);
Intent a = new Intent(MainActivity.this, Display.class);
startActivity(a);
اکتویتی دوم :
Bundle getPacket = getIntent().getExtras();
result = getPacket.getString("giveResults");
tvResult.setText(result);
در اینجا در اکتویتی اول یک Bundle تعریف شده و یه Instance ازش ساخته شده و سپس در اون یه رشته وارد شده. Bundle مثل یه بقچه می مونه که شما اطلاعاتو به روش key/value توش می ریزی (روش key/value یک روش ذخیره سازی اطلاعاته که با فراخوانی key که همون شناسه اطلاعاته مورد نظره value یعنی مقدار اون داده برگشت داده میشه است در SharedPreferences هم ازش استفاده می شه ). و در اکتویتی دوم میای از اون بقچه برش میداری ! حالا اشتباه کجاست ؟ getIntent().getExtras(); یعنی تمام اینت ها رو بگیر و سپس داخل Extra هاشو نگاه کن ! اما ما اطلاعاتو تو Bundle ریختیم اما موقع استارت Intent بهش پاس نکردیم. تا بتونیم از ش استفاده کنیم و شکل صحیح به صورت زیر خواهد بود.
Intent a = new Intent(MainActivity.this, Display.class);
a.putExtras("giveResults",packet );
startActivity(a);
که به وسیله ی putExtra میتونیم تو اکتیویتی دوم getExtra کنیم :)
مورد سوم که از همه مهم تره رو گذاشتیم آخر که کامل روش مانور بدیم 😊 NullPointerException :
این مورد یکی از شایع ترین دلایل force close شدن برنامست و هم در برنامه نویسی اندروید و هم در نوشتن برنامه های ویندوزی با جاوا زیاد رخ میده ! اول اندرویدش و بعد جاواش که مکمل هم هستند رو توضیح می دیم.
در سایت developer.android.com که مرجع اصلی هست در بخش Develop - > Reference - >NullPointerException اول جمله ی زیر رو می بینین :
public class
NullPointerException
extends RuntimeException
یعنی یک کلاس از نوع public که از RuntimeExceptions ارث بری شده . خب RuntimeExceptions هم که یک سوپر کلاس برای این حساب میشه و این کلاس ما Subclass اش هست به معنی انتظارات در زمان اجرا هست ! یعنی انتظاراتی که ما داریم و معمولا بر خلافش اتفاق میوفته !
بررسی اجمالی کلاس : وقتی که برنامه سعی می کنه به یک فیلد یا متد یک آبجکت یا یک المنت از یک آرایه دسترسی پیدا کنه وقتی که هیچ نمونه یا آرایه ای برای دسترسی وجود نداره ! و باعث میشه اون آبجکت یا آرایه به null اشاره کنه . و اون خطا رخ بده و همچین چیزی رو د ر LogCat مشاهده می کنین....Caused by: java.lang.NullPointerException
این مورد یکی از شایع ترین دلایل force close شدن برنامست و هم در برنامه نویسی اندروید و هم در نوشتن برنامه های ویندوزی با جاوا زیاد رخ میده ! اول اندرویدش و بعد جاواش که مکمل هم هستند رو توضیح می دیم.
در سایت developer.android.com که مرجع اصلی هست در بخش Develop - > Reference - >NullPointerException اول جمله ی زیر رو می بینین :
public class
NullPointerException
extends RuntimeException
یعنی یک کلاس از نوع public که از RuntimeExceptions ارث بری شده . خب RuntimeExceptions هم که یک سوپر کلاس برای این حساب میشه و این کلاس ما Subclass اش هست به معنی انتظارات در زمان اجرا هست ! یعنی انتظاراتی که ما داریم و معمولا بر خلافش اتفاق میوفته !
بررسی اجمالی کلاس : وقتی که برنامه سعی می کنه به یک فیلد یا متد یک آبجکت یا یک المنت از یک آرایه دسترسی پیدا کنه وقتی که هیچ نمونه یا آرایه ای برای دسترسی وجود نداره ! و باعث میشه اون آبجکت یا آرایه به null اشاره کنه . و اون خطا رخ بده و همچین چیزی رو د ر LogCat مشاهده می کنین....Caused by: java.lang.NullPointerException
Android Developers
Android Mobile App Developer Tools - Android Developers
Discover the latest app development tools, platform updates, training, and documentation for developers across every Android device.
خب چجوری این مشکلو بر طرف کنیم ؟ اگر در برنامتون از آرایه استفاده کردین و می دونین به خاطر اینکه مثلا شما 20 تا عضو آرایتون داره و دارین روی آرایه حرکت می کنین با استفاده از couner (شمارنده ) و به ایندکس 21 که میرسین force close میده میتونین یه if بذارین به این صورت که
if (counter ==ArrayName.length -1)
بود یه پیغام به کاربر نشون بدین یا هر کار دیگه اینجا -1 گذاشتم چون index از 0 شروع میشه و وقتی 20 تا آیتم داشته باشیم index آخرین آیتم 21 است ! .
به همین راحتی در این مورد ارور برطرف میشه اما این یکی از حالات بود .
چند حالت بعدی :
شما هر ویجتی که در xml تون تعریف میکنین برای استفاده از اون در کدهای جاوا باید بهش یه مرجع یا Refrence بدین . و اینو در نظر داشته باشین که قبل از
setContentView()
شما هیچ مرجعی از xml تون نمی تونین بدین و اگر بدین باعث NullPointerException میشه . و همچنین قبل از مرجع دادن به اون ویو نمی تونین چیزی رو بهش ست کنین . نمونه عملی :
فرض کنین ما یک لیست ویو تعریف می کنیم و setAdapter ش می کنیم .
ListView listview;
listview.setAdapter(new ArrayAdapter<String😠this,android.R.layout.androiddevelop,mStrings));
حالا لیست ویو شما null هست و شما سعی می کنین تا setAdapeter ش کنین پس NPE که مخفف همون NullPointerException هست اتفاق میوفته !
if (counter ==ArrayName.length -1)
بود یه پیغام به کاربر نشون بدین یا هر کار دیگه اینجا -1 گذاشتم چون index از 0 شروع میشه و وقتی 20 تا آیتم داشته باشیم index آخرین آیتم 21 است ! .
به همین راحتی در این مورد ارور برطرف میشه اما این یکی از حالات بود .
چند حالت بعدی :
شما هر ویجتی که در xml تون تعریف میکنین برای استفاده از اون در کدهای جاوا باید بهش یه مرجع یا Refrence بدین . و اینو در نظر داشته باشین که قبل از
setContentView()
شما هیچ مرجعی از xml تون نمی تونین بدین و اگر بدین باعث NullPointerException میشه . و همچنین قبل از مرجع دادن به اون ویو نمی تونین چیزی رو بهش ست کنین . نمونه عملی :
فرض کنین ما یک لیست ویو تعریف می کنیم و setAdapter ش می کنیم .
ListView listview;
listview.setAdapter(new ArrayAdapter<String😠this,android.R.layout.androiddevelop,mStrings));
حالا لیست ویو شما null هست و شما سعی می کنین تا setAdapeter ش کنین پس NPE که مخفف همون NullPointerException هست اتفاق میوفته !
کد صحیح :
ListView listview=(ListView)findViewById(R.id.list);
یا
ListView listview = new ListView(this);
هست که یعنی یا باید به لیست ویو مرجع بدین یا یه آبجکت ازش بسازین و بعد set کنین چیزی رو بهش .
خب هرگز نمیشه تمام حالات رو بررسی کرد !! و این موارد مواردی بود که شاید بیشتر برای تازه کارها یا دوستان اتفاق بیوفته بهترین روش حل این مشکل ابتدا یافتن این که مشکل از کدوم قسمت کدتون هست با استفاده از try/catch و سپس حل اون مشکل است.
اون قسمت کدی که شک دارین ارورتون از اونجا باشه رو در
try{
//کد شما
}
قرار بدین و بعدش
catch(NullPointerException e){
e.printStackTrace();
}
رو بذارین تا موقع دیباگ کردن برنامه در LogCat متوجه بشین ارور از کجاست. یه نمونه از خطاهایی که به خاطر NPE رخ داده رو داخلش توضیحات رو نوشتم تا اگر خطاشو دیدن ببین کجا باید دنبال عامل به وجود آورنده خطا باشین.
Caused by: java.lang.NullPointerException
02-03 16:19:48.322: E/AndroidRuntime(959): at
mohammad.ghaffari.androiddevelop(پکیج نیم).MainMenu(نام کلاس).populateListViewFromDB(نام تابع)(MainMenu.java():184(خط 184 ام کد کلاس )).
خسته نباشین ❤️.
در مورد دیباگ کردن در اندروید استودیو به زودی یه مقاله کامل گذاشته خواهد شد.
دوستان این مقاله حدود 4 5 ساعت نوشتنش زمان برد و حاصل تجربیات شخصی طی 4 ، 5 سال و بررسی حداقل 10، 11 مقاله و مشکلات رایج در اینترنت بود. و برای اولین بار در کانال @androiddevelop قرار داده شد و لطفا در صورت کپی برداری حتما فروارد کنین و منبع رو ذکر کنین .
منابع استفاده شده در این مقاله :
1-تجربیات شخصی !
2-http://developer.android.com/reference/java/lang/NullPointerException.html
3-http://developer.android.com/guide/topics/manifest/application-element.html
4-http://samir-mangroliya.blogspot.ae/p/why-nullpointerexception-occures-in.html
5-بررسی انواع سوالهای مطرح شده در سایت stackoverflow.com و جوابهای آنها مانند:
http://stackoverflow.com/questions/14198204/android-app-force-closing
http://stackoverflow.com/questions/19977856/android-caused-by-java-lang-nullpointerexception
و...
با معرفی کانال ما به دوستان و در گروه های خودتون ما رو حمایت کنین تا آموزش ها ادمه پیدا کنه. ❤️❤️
@androiddevelop
@mohamadghaffari
لینک گروه ما جهت پرسش و پاسخ (تلگرامتون رو به آخرین نسخه باید آپدیت کنین):
https://telegram.me/joinchat/B1f7ETv_ZoJDk2dr0ES0rQ
ListView listview=(ListView)findViewById(R.id.list);
یا
ListView listview = new ListView(this);
هست که یعنی یا باید به لیست ویو مرجع بدین یا یه آبجکت ازش بسازین و بعد set کنین چیزی رو بهش .
خب هرگز نمیشه تمام حالات رو بررسی کرد !! و این موارد مواردی بود که شاید بیشتر برای تازه کارها یا دوستان اتفاق بیوفته بهترین روش حل این مشکل ابتدا یافتن این که مشکل از کدوم قسمت کدتون هست با استفاده از try/catch و سپس حل اون مشکل است.
اون قسمت کدی که شک دارین ارورتون از اونجا باشه رو در
try{
//کد شما
}
قرار بدین و بعدش
catch(NullPointerException e){
e.printStackTrace();
}
رو بذارین تا موقع دیباگ کردن برنامه در LogCat متوجه بشین ارور از کجاست. یه نمونه از خطاهایی که به خاطر NPE رخ داده رو داخلش توضیحات رو نوشتم تا اگر خطاشو دیدن ببین کجا باید دنبال عامل به وجود آورنده خطا باشین.
Caused by: java.lang.NullPointerException
02-03 16:19:48.322: E/AndroidRuntime(959): at
mohammad.ghaffari.androiddevelop(پکیج نیم).MainMenu(نام کلاس).populateListViewFromDB(نام تابع)(MainMenu.java():184(خط 184 ام کد کلاس )).
خسته نباشین ❤️.
در مورد دیباگ کردن در اندروید استودیو به زودی یه مقاله کامل گذاشته خواهد شد.
دوستان این مقاله حدود 4 5 ساعت نوشتنش زمان برد و حاصل تجربیات شخصی طی 4 ، 5 سال و بررسی حداقل 10، 11 مقاله و مشکلات رایج در اینترنت بود. و برای اولین بار در کانال @androiddevelop قرار داده شد و لطفا در صورت کپی برداری حتما فروارد کنین و منبع رو ذکر کنین .
منابع استفاده شده در این مقاله :
1-تجربیات شخصی !
2-http://developer.android.com/reference/java/lang/NullPointerException.html
3-http://developer.android.com/guide/topics/manifest/application-element.html
4-http://samir-mangroliya.blogspot.ae/p/why-nullpointerexception-occures-in.html
5-بررسی انواع سوالهای مطرح شده در سایت stackoverflow.com و جوابهای آنها مانند:
http://stackoverflow.com/questions/14198204/android-app-force-closing
http://stackoverflow.com/questions/19977856/android-caused-by-java-lang-nullpointerexception
و...
با معرفی کانال ما به دوستان و در گروه های خودتون ما رو حمایت کنین تا آموزش ها ادمه پیدا کنه. ❤️❤️
@androiddevelop
@mohamadghaffari
لینک گروه ما جهت پرسش و پاسخ (تلگرامتون رو به آخرین نسخه باید آپدیت کنین):
https://telegram.me/joinchat/B1f7ETv_ZoJDk2dr0ES0rQ
Android Developers
<application> | App architecture | Android Developers
The declaration of the application. This element contains subelements that declare each of the application's components and has attributes that can affect all the components. Many of these attributes (such as icon, label, permission, process, taskAffinity…
دوستان در حال آماده سازی قسمت های بعدی آموزش بالا هستیم لطفا صبور باشین سورپرایزم داریم براتون 😊
@androiddevelop
@androiddevelop