آموزش برنامه نویسی اندروید قسمت ۴۲: آموزش ساخت اپلیکیشن ذکر شمار (بخش سوم) نحوه به کارگیری TextView
سه شنبه 1 بهمن 1392 11:20 AM
پس از ساخت رابط گرافیکی کاربر اپلیکیشن ذکر شمار در دو آموزش گذشته، در این آموزش قصد داریم تا فایل جاوای اپلیکیشن خود را به دکمه ایجاد شده و همچنین TextView یی که مسئول نمایش تعداد ذکرهای گفته شده است لینک دهیم.
برای همین منظور پروژه My Prayer Counter را باز کرده و این بار فایل جاوای اپلیکیشن یا به عبارت دیگر همان Activity اپلیکیشن خود که MainActivity.java نام دارد را باز می کنیم (لازم به ذکر است که این فایل همانطور که در تصویر زیر مشخص است در فولدر src در زیرشاخه پکیجی که برای اپلیکیشن خود در نظر گرفتیم قرار دارد):
پس از باز کردن این فایل در محیط اکلیپس با کد زیر مواجه خواهیم شد:
به طور کلی می توان گفت که کد فوق به منزله حداقل کدی است که یک اپلیکیشن اندرویدی می تواند داشته باشد (به منظور آشنایی بیشتر با بخش های مختلف کد فوق می توانید به آموزش بیست و هفتم مراجعه نمایید). از آنجا که قرار است در این اپلیکیشن تعداد ذکرهای گفته شده شمرده شود پس معلوم است که ما با اعدادی از جنس عدد صحیح سر و کار داریم. همانطور که می دانیم یکی از متغیرهایی که مسئول ذخیره سازی اعدادی از جنس عدد صحیح است متغیر int می باشد (جهت آشنایی بیشتر با انواع متغیرها در زبان برنامه نویسی جاوا به آموزش پنجم از سری آموزش های جاوا در سایت نردبان مراجعه نمایید). حال نیاز است تا متغیری از جنس int در اپلیکیشن خود ایجاد کنیم که این وظیفه را دارا است تا تعداد ذکرها را در خود ذخیره سازد. نامی که برای این متغیر در نظر خواهیم گرفت counter به معنی "شمارنده" است. در پاسخ به این سوال که کجا بایستی این متغیر را تعریف کنیم بایستی گفت که این متغیر را در کلاس MainActivity تعریف کرده سپس داخل متد onCreate مقداری را برای آن در نظر خواهیم گرفت:
همانطور که در کد فوق مشخص است داخل متد onCreate مقدار صفر را برای متغیر counter در نظر گرفته ایم. از آنجا که در این اپلیکیشن از دکمه ها و TextView ها استفاده می کنیم پس نیاز است تا کلاس های Button و TextView را در اپلیکیشن خود فرا بخوانیم. ابتدا کلاس TextView را در وارد برنامه کرده و TextView یی که مسئول نمایش تعداد ذکرها بود و دارای id یی معادل با txt_textTwo بود را به آن لینک می دهیم:
اگر به تصویر فوق خوب دقت کنیم می بینیم که کد مربوط به TextView به پنج قسمت مجزا تقسیم شده است. بخش شماره یک مربوط به کلاسی تحت عنوان TextView در SDK اندروید است که توسط طراحان این سیستم عامل نوشته شده است. اگر به این TextView توجه کنیم می بینیم که دور آن نقطه چین قرار گرفته است و این بدان معنی است که این کلاس به اپلیکیشن ما Import نشده است. برای این رفع این مشکل نیاز است تا نشانگر موس خود را روی نقطه چین قرار داده و همانطور که در تصویر زیر مشخص است گزینه Import ‘TextView’ android.widget را انتخاب نماییم:
اکنون پس از کلیک روی این گزینه خواهیم دید که این کلاس وارد اپلیکیشن خواهد شد:
همانطور که در تصویر فوق مشخص است پس از Import کردن این کلاس نقطه چین هشدار دهنده از بین رفته و همچنین کلاس TextView به بخش import ها که در بالای کد قرار دارد اضافه می شود و از این پس به کلیه متدهای مرتبط با کلاس TextView دسترسی خواهیم داشت. همانطور که می دانیم کلاس هایی که در زبان جاوا مورد استفاده قرار می دهیم می بایست دارای نامی باشند. مثلا اگر در یک برنامه جاوا از کلاس String استفاده کنیم حتماً می بایست برای آن نامی در نظر بگیریم. در اینجا نامی که در نظر گرفته ایم و دلخواه هم هست tView است که مثلا حرف t را مخفف واژه Text در نظر گرفته ایم. به خاطر داشته باشیم که این نام با نامی که برای TextView خود در XML در نظر گرفتیم متفاوت است. در واقع در ادامه آموزش خواهیم دید که به چه شکل می توان TextView ایجاد شده در XML را به کلاس TextView در جاوا لینک داد. اکنون یک علامت مساوی قرار داده و کلاس TextView را داخل پرانتز مقابل علامت مساوی می نویسیم یا به عبارت دیگر آن را Cast می کنیم. مورد شماره سه مربوط به Cast است (برای آشنایی بیشتر با مفهوم Cast به سری آموزش های برنامه نویسی جاوا در سایت نردبان قسمت 34 و 35 مراجعه نمایید). اینکه چرا بایستی یک TextView را در اندروید Cast به خود آن TextView کرد مسئله ای است که کمی نیاز به توضیح دارد. به طور کلی هرچیزی از دکمه گرفته تا TextView یا هرچیزی دیگری در سیستم عامل اندروید نمونه ای از کلاس View محسوب می شوند. از اینرو همواره با Cast کردن مثلاً یک TextView به خود آن TextView به اندروید می فهمانیم که این این View یک Button یا Image نیست بلکه یک TextView است که در غیر اینصورت یعنی چنانچه عمل Cast کردن صورت نگیرد اندروید در تشخیص دادن مابین View های مختلف با مشکل مواجه خواهد شد. مورد چهارم مربوط به findViewById است. به خاطر داشته باشیم که در این مرحله از کدنویسی نیازی به نوشتن کل عبارت فوق نیست بلکه با نوشتن کلمه find و فشردن هم زمان دکمه های Ctrl و Space اکلیپس به صورت خوکار این عبارت را برای ما تکمیل خواهد کرد. همانطور که در قست بالا توضیح دادیم هر چیزی در اندروید یک View محسوب می شود. حال کاری که این خط از کد انجام می دهد این است که View یی که مد نظر ما است را از طریق id اختصاص داده شده به آن در XML پیدا می کند. گزینه شماره پنج نشانگر id اختصاص داده شده به TextView یی است که مسئول نمایش تعداد ذکرها می باشد (به منظور آشنایی بیشتر با R که داخل پرانتز نوشته شده است به آموزش نهم مراجعه نمایید). در پایان یک علامت ; قرار داده و در این قسمت لینک دادن id مرتبط با TextView قرار گرفته در فایل XML به کلاس TextView در فایل جاوا به پایان می رسد. علت آنکه در دو آموزش گذشته اصرار داشتیم تا id هایی را که اکلیپس به صورت خودکار برای TextView ها و Button ها در نظر می گرفت را تغییر دهیم اینجا مشخص خواهد شد. در واقع به منظور تکمیل کد داخل پرانتز می توان اول حرف R را نوشته سپس یک نقطه قرار داد سپس id را نوشته سپس یک نقطه قرار داد و اگر در این مرحله دکمه های Ctrl و Space را فشار دهیم با عکس زیر مواجه خواهیم شد:
همانگونه که مشخص است کلیه id هایی که با txt شروع می شوند دنبال یکدیگر قرار گرفته اند که در این صورت به راحتی خواهیم توانست به id مد نظر دست پیدا کنیم. به عبارت دیگر id ها بر اساس پیشوندی که دارند Sort یا مرتب شده اند. طبق روش فوق الذکر کلاس Button اندروید را نیز وارد اپلیکیشن کرده و نامی همچون btn برای آن در نظر گرفته، آن را Cast می کنیم به Button و در نهایت آن را به دکمه ای که در فایل XML ایجاد کرده بودیم که دارای id یی معادل با btn_buttonOne بود لینک می دهیم. در این مرحله کد ما می بایست به صورت زیر باشد:
مدیر تالار های: