خطاهای برنامه نویسی اندروید

امتیاز 4.00 ( 3 رای )

سلام دوستان گرامی در این سری از آموزش برنامه نویسی اندروید به خطاهای برنامه نویسی اندروید می پردازیم به گونه به خطاهای اندروید استودیو نیز اشاره خواهیم کرد شاید در هنگام کد نویسی و اجرای برنامه با خطاهای مختلفی روبه رو شده باشید سعی می کنیم این صفحه را کاملترین بخش برای حل خطاهای برنامه نویسی اندروید و همینطور حل خطاهای اندروید استودیو قرار بدهیم در ادامه با ما همراه باشید تا برخی از خطاهای برنامه نویسی اندروید باهم بررسی کنیم اگر بگویم تمامی خطاهای اندرویدی را می شود در یک مطلب بیان کرد دروغی بیش نگفته ایم تا جایی که امکان داشته باشد سعی می کنیم به صورت روزانه این مطلب رو بروزرسانی کنیم.
شاید در این صفحه بتوانید خطاهایی که پروژه یا اندروید استودیو شما داده است را به سادگی رفع کنید.
ساده ترین راه برای دیدن خطا بخش Logcat Monitor’s هست که در حالت Error می توان خطاهای اجرا و خطاهای اندروید استودیو یا حتی مرتبط با پروژه را مشاهده کنید.
خطای Cannot Resolve Symbol R در برنامه نویسی  اندروید

زمانی که اندروید استودیو نتواند فایل R.java را ایجاد کنید یا بتواند آن را ایجاد کند ولی به صورت corrupt شده فایل ایجاد شود  این خطا رخ میدهد راه حل کار چیست کافی است یک بار پروژه را Clean کنید.
در بخش Toolbar مربوط به اندروید استودیو مسیر زیر را دنبال و بروی آن کلیک کنید.

کمی صبر کنید پروژه دوباره Rebuild شود و می بینید که خطاها رفع شده است.
خطای Too Many Field References….Max is 65,536 در برنامه نویسی اندروید

زمانی که یک فایل apk را خروجی میگیرید در واقع آنها را به DEX تبدیل می شوند هر یک Dex می تواند شامل 65,536 متد (methods) باشد برای اینکه این مشکل رو حل کنید دو راه دارید کتاب خانه هایی را که استفاده کرده اید کاهش دهید راه حل دوم فعالی سازی Multidex و استفاده از دو Dex یا تعداد بیشتری از آن است برای اینکار می توانید از آموزش زیر استفاده کنید.
آموزش multidex در برنامه نویسی اندروید 
خطای Please Choose a Valid JDK Directory در برنامه نویسی اندروید

زمانی این خطا رخ میدهد که JDK مورد نیاز اندروید استودیو وجود نداشته باشد یا حذف شده باشد برای اینکار می توانید از عکس زیر استفاده کنید.
 

 
در واقع باید مسیر مربوط به JDK نصب شده و همینطور تیک مربوط به Use embedded JDK خورده باشد.
خطای Error Installing APK در اندروید

در بعضی موارد خطای Error Installing APK دیده شده اگر بروی Emulator تست میگیرید یکبار آن را ریستارت کرده اگر بروی گوشی تست میگیرید یکبار کابل رو قطع و سپس دوباره متصل کنید قابلیت Instant Run را خاموش کنید.
adb را Restart کنید برای اینکار می توانید مثل زیر عمل کنید.
ابتدا ترمینال رو باز کنید.
دستور زیر را در آن تایپ یا کپی کنید (دقت کنید برای ویندوز مسیر کمی متفاوت است)
مک

ویندوز

بعد از دستور بالا دستور زیر را اجرا کنید.

سپس

خطای INSTALL_FAILED_INSUFFICIENT_STORAGE در برنامه نویسی اندروید

این خطا به این معنی است که گوشی یا Emulator فضای کافی برای نصب برنامه ندارد اگر بروی گوشی است که باید فضا خالی کنید اگر بروی AVD است باید از بخش AVD Manager حافظه که در تب  Memory and Storage وجود دارد را افزایش دهید.
خطای ActivityNotFoundException در برنامه نویسی اندروید
این خطا زمانی رخ میدهد که ما از متد startActivity استفاده می کنیم و اینکه اکتیویتی ما به درستی در فایل AndroidManifest تعریف نشده است یا به اشتباه در حال استفاده از اکتیویتی هستیم.
برای تعریف اکتیویتی می توانید مثل زیر در فایل AndroidManifest.xml عمل کنید.

دلیل دوم که باعث می شود خطای ActivityNotFoundExceptions رخ دهد وجود نداشتن آن Intent یا کلاس است فکر کنید می خواهیم برنامه Google Play را بروی گوشی باز کنیم ولی آن وجود نداشته باشد و خطای ActivityNotFoundExceptions رخ میدهد.
برای اینکه از آن جلوگیری کنیم کافی است از try و catch استفاده کنیم.

خطای ClassCastException در برنامه نویسی اندروید

ClassCastException یکی از خطاهایی است که به جاوا ربط دارد زمانی که بخواهیم عمل cast را به اشتباه انجام دهیم مثلا یک متغیر از نوع رشته است و بخواهیم آن را با یک int جمع کنیم رخ میدهد در واقع بخواهیم یک شئی که از یک نوع دیگر است را به یک شئی دیگر تبدیل کنیم خطای ClassCastException رخ میدهد یک نمونه از آن را در زیر مشاهده می کنید.

یا حتی برای find کردن

در بالا داریم دکمه ای را به عنوان ImageView پیدا یا find می کنیم.
خطای NullPointerException در برنامه نویسی اندروید

در جاوا زمانی که یک متغیر تعریف می شود Pointer یک Reference یا مرجع برای آن تعریف می کند تا داده آن قابل استفاده باشد و به توان از طریق آن به مقدار متغیر دسترسی پیدا کرد زمانی که خطای NullPointerException یا (NPE) رخ میدهد به این معنی است که Reference ی وحود ندارد یعنی Pointer جایی ندارد که به آن اشاره کند و خطا رخ میدهد در بیشتر مواقع به خاطر نبود داده یا وجود نداشتن درست داده این خطا رخ میدهد.
هر زمان که یک متغیر به صورت داده خالی تعریف شود سپس بخواهیم به مقدار آن متغیر (که null بوذه) دسترسی پیدا کنیم خطای NullPointerException رخ میدهد.
یک نمونه ساده آن که قابل پیاده سازی است یک findview با آیدی button1 انجام دهید و خطا رخ میدهد (دکمه را در layout قرار ندهید) چون در حال find کردن شئی هستیم که وجود ندارد.
خطای Application Not Responding Error در برنامه نویسی اندروید

زمانی که Ui برنامه به هر دلیلی قفل شود و دیگر قادر به پاسخگویی به کاربر نباشد خطای ANR یا Application Not Responding Error رخ میدهد علت رخ دادن این خطا هم به علت استفاده زیاد از UI Thread است.
خطای Only the Original Thread That Created a View Hierarchy Can Touch Its Views در برنامه نویسی اندروید

یکی دیگر از خطاهایی که بیشتر مواقع رخ میدهد خطای Only the Original Thread That Created a View Hierarchy Can Touch Its Views است در اندروید فقط باید از ترد اصلی یا Main Thread رابط کاربری یا UI بروزرسانی شده یا تغییر کند اگر از تردی به غیر از ترد اصلی این کار انجام شود خطا رخ میدهد برای حل این مشکل کافی است از runOnUiThread استفاده کنید.

خطای NetworkOnMainThreadException

انجام کارهایی که سمت سرور است مثلا ارسال Request به یک Api یا دانلود فایل ممکن است زمان بر باشد نباید این کارها را در ترد اصلی (Main Thread) انجام داد این خطا از اندروید Android 3.0 به بالا قابل دریافت است باید انجام این کار ها در background انچام شود تا کاربر زمانی که در حال کار با اپلیکیشن است آن را فریز شده نبیند برای اینکار باید از کلاس AsyncTask استفاده شود.
لینک آموزش AsyncTask در اندروید
خطای Activity Has Leaked Window That Was Originally Added Here در برنامه نویسی اندروید

این خطا در زمانی رخ میدهد که شما یک Dialog نمایش داده شد اما به درستی dimiss نشد هرچند اندروید در حال مدیریت این بخش است ولی بهتر است این کار به درستی انجام شود چون باید قبل از اینکه اکتیویتی کامل بسته شود دیالوگ نیز قبلش بسته شده باشد یا قبل از ایجاد اکتیویتی نمایش داده نشود برای اینکار کافی است در متد onDestroy دیالوگ را از بین ببریم.

خطای OutofMemoryError در اندروید

زمانی که بخواهید کاری را انجام دهید که در توان memory گوشی نباشد این خطا رخ میدهد مثلا بخواهید چند میلیون Json را پارس کنید یا به طور مثال بیش از 1000 تا متغیر به صورت static داشته باشد هیچ وقت این کار را نکنید یا به طور مثال broadcast های خود را unregister  کنید سرویس های خود را در هنگام بستن اپلیکیشن destroy کنید (هرچند کار منطقی نیست چون اپلیکیشن بلا استفاده می شود با اینکار) یا به طور مثال بخواهید یک عکس که بیش از 10 مگ است را لود کنید.
 
 
این آموزش هم به پایان رسید.
موفق و پیروز باشید.

مطالعه بیشتر