¤¤¤  لحظات خوبی برای شما آرزومندیم  ¤¤¤

مشاهده پست هاي بدون جواب | نمايش مبحث هاي فعال

نام کاربري:
کلمه عبور:

به یاد داشته باش
فقط در در صفحه اصلی تالار میتوانید از ورود سریع استفاده کنید
درخواست عضویت   ورود 



ارسال مبحث جديد پاسخ به مبحث  [ 55 پست ]  برو به صفحه قبلي  1, 2, 3, 4, 5, 6
forumtools   forumtools
نويسنده پيغام
پستارسال شده در: چهارشنبه 6 آذر 1392, 3:03 pm 

مورچه ارشد

نماد کاربر
offline


تاريخ عضويت: جمعه 8 دی 1391, 10:43 pm

پست ها : 1179

محل سکونت: نجف اباد - اصفهان

تشکر کرده: 3057 بار
تشکر شده: 1622 بار
آموزش برنامه نویسی اندروید قسمت ۴۲: آموزش ساخت اپلیکیشن ذکر شمار (بخش سوم) نحوه به کارگیری TextView ها


تصوير


اهداف آموزشی این قسمت عبارتند از:
1. معرفی view ها در سیستم عامل اندروید
2. نحوه به کار گیری از کلاس TextView در اپلیکیشن
3. نحوه به کار گیری از کلاس Button در اپلیکیشن

پس از ساخت رابط گرافیکی کاربر اپلیکیشن ذکر شمار در دو آموزش گذشته، در این آموزش قصد داریم تا فایل جاوای اپلیکیشن خود را به دکمه ایجاد شده و همچنین 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 است.

اینکه چرا بایستی یک 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 بود لینک می دهیم. در این مرحله کد ما می بایست به صورت زیر باشد:

تصوير


پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
1. چرا در این اپلیکیشن از متغیری استفاده می کنیم که برای ذخیره سازی اعداد صحیح است؟
2. چرا در استفاده از یکی از کلاس های TextView یا Button در اندروید بایستی آنها را به خودشان Cast کرد؟
3. منظور از اینکه هر چیزی در اندروید یک View محسوب می شود چیست؟

_________________
تصوير



برای این پست از ebihoseini تشکر شده است : HASSAN
  امتیاز: 4.35%
بالا
 مشخصات  
 
 
 
پستارسال شده در: چهارشنبه 13 آذر 1392, 4:49 pm 

مورچه ارشد

نماد کاربر
offline


تاريخ عضويت: جمعه 8 دی 1391, 10:43 pm

پست ها : 1179

محل سکونت: نجف اباد - اصفهان

تشکر کرده: 3057 بار
تشکر شده: 1622 بار
آموزش برنامه نویسی اندروید - قسمت ۴۳: آموزش ساخت اپلیکیشن ذکر شمار (بخش چهارم) معرفی متدهای مرتبط با کلاس Button در اندروید


تصوير


اهداف آموزشی این قسمت عبارتند از:
1. معرفی متدهای مرتبط با کلاس Button در اندروید
2. معرفی متد setText
3. آشنایی با نوع پارامتری که می توان در متد setText قرار داد

پس از فراخوانی موفقیت آمیز کلاس Button در آموزش قسمت چهل و دوم، در این آموزش در ادامه ساخت اپلیکیشن "ذکر شمار مادر بزرگ" قصد داریم تا به معرفی متدهای مرتبط با کلاس Button در اندروید بپردازیم. در حقیقت با استفاده از متدهای مرتبط می بایست به اپلیکیشن خود دستور دهیم تا زمانیکه روی دکمه کلیک شد چه کاری را انجام دهد.

برای شروع کار پروژه ای که تحت عنوان My Prayer Counter ایجاد کردیم را باز کرده و همانگونه که در آموزش گذشته توضیح دادیم فایل MainActivity.java را در محیط برنامه نویسی اکلیپس باز می کنیم:

تصوير


همانگونه که در کد فوق می بینیم موفق شده ایم تا یک شیئ از روی کلاس Button که در SDK اندروید قرار دارد تحت عنوان btn بسازیم. حال از آنجا که کلاس Button را به اپلیکیشن خود import کرده ایم می توانیم به کلیه متدهای مرتبط با این کلاس دسترسی داشته باشیم. از این رو اول نام شیئ ساخته شده از روی کلاس Button را نوشته سپس یک نقطه قرار داده و همانطور که در تصویر زیر مشخص است به کلیه متدهای مرتبط با کلاس Button دسترسی خواهیم داشت. چنانچه بخواهیم دکمه ای پس از آنکه روی آن کلیک شد کاری انجام دهد به متدی تحت عنوان setOnClickListener نیاز داریم. در واقع اگر بخواهیم این متد را به صورت تحت الفظی ترجمه می کنیم بایستی بگوییم که این متد معادل است با "اگر دکمه فشار داده شد به حرف کاربر گوش بده و یه کاری انجام بده" :

تصوير


همانگونه که در تصویر فوق مشخص است پس از نوشتن نام شیئی که از روی کلاس Button ایجاد کردیم و قرار دادن یک نقطه و نوشتن ابتدای نام متد مد نظر و فشردن هم زمان کلیدهای Ctrl و Space پنجره ای باز خواهد شد که کلیه متدهای مرتبط با کلاس Button را به ما نشان خواهد داد. اکنون متد مد نظر را از این لیست پیدا نموده و روی آن کلیک می کنیم. حال کد ما به شکل زیر در خواهد آمد:

تصوير


در حقیقت آنچه که مابین دو پرانتز این متد قرار می گیرد به عنوان پارامتر این متد خواهد بود. به طور کلی می توان گفت که ما در حال حاضر هیچ گونه OnClickListener یی نداریم پس بایستی یکی برای این دکمه بسازیم. از این روی کلید واژه new را نوشته یک فاصله قرار داده سپس عبارت View را نوشته و کلید های Ctrl و Space را به صورت هم زمان فشار می دهیم:

تصوير


همانطور که در تصویر فوق نشان داده شده است می بایست روی گزینه ای که حاوی View.OnClickListener است کلیک کنیم. در واقع از آنجا که متد OnClickListener بخشی از کلاس View است، می بینیم که ابتدا کلاس View نوشته شده و این متد به آن ضمیمه شده است:

تصوير


همانطور که در کد فوق با یک فلش قرمز رنگ مشخص شده است، کلاس View به برنامه ما Import شد. جایی که با یک دایره قرمز رنگ نشان داده شده است به منزله نقطه پایانی جایی است که متدهای مرتبط با کلاس Button در آن قرار گرفته و قرار است به محض کلیک شدن روی دکمه کاری انجام دهند. اگر به داخل دایره خوب توجه کنیم می بینیم که دور پرانتز نقطه چین قرار گرفته است و این نقطه چین حاکی از آن است که مشکلی در ارتباط با این متد وجود دارد. با قرار دادن نشانگر موس خود روی نقطه چین با تصویر زیر مواجه خواهیم شد:

تصوير


عبارتی که در باکس زرد رنگ وجود دارد حاکی از آن است که می بایست یک علامت ; در آن نقطه قرار داده تا دستور ما تکمیل شود. حال با قرار دادن یک علامت ; پس از پرانتز خواهیم دید که مشکل بر طرف خواهد شد:

تصوير


تا اینجای کار موفق شده ایم تا متدهای لازم برای عملکرد یک دکمه را وارد برنامه کنیم. در واقع اگر به کد فوق نگاهی بیندازیم خواهیم دید که دارای یک کامنت است. محل قرارگیری این کامنت جایی است که می بایست دستورات مد نظر خود را به منظور عملی شدن آنها نوشت. به عبارت دیگر متدی تحت عنوان onClick که از جنس void است به منزله جایگاهی است که قرار است دستورات ما را در مورد دکمه اجرا کند.

اکنون از آنجا قرار است هر بار که ذکری گفتیم یکبار روی دکمه کلیک کنیم تا یک واحد به تعداد ذکرها اضافه شود نیاز است تا کد خود را به شکل زیر تکمیل کنیم:

تصوير


در واقع داخل متد onClick نام متغیر خود را نوشته و دو علامت به علاوه پس از آن قرار می دهیم و در نهایت یک علامت ; می نویسیم. این خط از کد یک واحد به مقدار متغیر counter اضافه می کند. به عنوان راه کار جایگزین می توانیم از دستور counter = couner +1; نیز استفاده کنیم.

در واقع پس از وارد کردن کلاس TextView به اپلیکیشن خود به کلیه متدهای این کلاس دسترسی خواهیم داشت. یکی از متدهایی که در این اپلیکیشن استفاده خواهیم کرد متد setText است که این وظیفه را دارا است تا متنی را به یک TextView اختصاص دهد. حال کد خود را به صورت زیر تکمیل می کنیم:

تصوير


همانطور که در تصویر فوق می بینیم ابتدا نام TextView خود را نوشته سپس یک نقطه قرار داده و متد setText را می نویسیم. اگر در تصویر فوق دقت کنیم می بینیم که دوره tView نقطه چین قرار گرفته است. برای اینکه ببینیم اکلیپس با چه مشکلی رو به رو شده است، نشانگر موس خود را روی tView قرار می دهیم:

تصوير


همانطور که در باکس زرد رنگ مشخص است، از آنجا که ما کلاس TextView خود را داخل کلاس تعریف نکرده بلکه داخل متد onCreate تعریف کرده ایم قابل دسترسی نیست. راه کاری که اکلیپس به ما پیشنهاد می دهد این است که tView را به final تبدیل کنیم. برای این منظور با نشانگر موس خود روی خط آبی رنگ کلیک کرده تا دستور final را عملی سازیم:

تصوير


همانطور که در تصویر فوق مشخص است کلید واژه final به کلاس TextView اضافه شده است. به طور خلاصه کاری که این کلید واژه final انجام می دهد این است که کلاس TextView را محدود کرده و از این پس امکان وارثت از این کلاس از بین خواهد رفت. به عبارت دیگر با این کار این تضمین را به اندروید خواهیم داد که هیچ کلاسی را از روی این کلاس ایجاد نخواهیم کرد.

چنانچه تمایل داشته باشیم که از کلید واژه final استفاده نکنیم می توانیم کلاس TextView خود را از داخل متد onCreate به داخل کلاس MainActivity انتقال دهیم که در این صورت دیگر نیازی به نوشتن کلید واژه final نیست:

تصوير


همانطور که در تصویر فوق مشخص است کلاس TextView در کنار متغیر counter داخل کلاس MainActivity تعریف شده است سپس داخل متد onCreate مقداری را به آن اختصاص داده ایم.

اگر به تصویر فوق خوب دقت کنیم می بینیم که متد setText نیز دارای مشکلی است و دور آن نقطه چین قرار گرفته است. در واقع علت آن است که داخل آن هیچ پارامتری قرار نداده ایم و به محض اینکه پارامتری برای آن در نظر بگیریم این مشکل برطرف خواهد شد.

به طور خلاصه tView شیئی است که از روی کلاس TextView ساخته شده است. این کلاس نیز به یک TextView دیگر که در فایل XML تحت عنوان txt_textTwo ایجاد کردیم لینک شده است. متدی هم تحت عنوان setText که به tView ضمیمه شده است این وظیفه را دارا است تا هرآنچه که داخل پرانتز مقابل آن قرار گیرد را به txt_textTwo اختصاص دهد. حال از آنجا که می خواهیم با هر بار کلیک شدن روی دکمه یک واحد به متغیر counter اضافه شود پس می توانیم نتیجه بگیریم که با قرار دادن متغیر counter داخل پرانتز مرتبط با متد setText می توانیم به نتیجه مد نظر دست پیدا کنیم. اکنون کد خود را به صورت زیر تکیمل می کنیم:

تصوير


حال برنامه خود را اجرا می کنیم:

تصوير


با کلیک کردن روی دکمه به علاوه قصد داریم تا یک ذکر گفته شده را به شمارنده اضافه کنیم:

تصوير


به محض کلیک کردن می بینیم که اپلیکیشن اصطلاحاً Crash می کند. مسلماً مشکلی وجود دارد که از آن بی خبریم.

در حقیقت بنده از یک نکته غفلت کرده و آن هم اینکه پارامتر مرتبط با متد setText حتماً می بایست چیزی از جنس یک string یا نوشته باشد که در غیر اینصورت عملکرد این متد با مشکل مواجه خواهد شد. برای رفع این مشکل می توانیم یا متنی را همچون "ذکر شمار" به پارامتر داخل پرانتز اضافه نموده و یا صرفاً یک علامت " " به متغیر counter اضافه کنیم که در این آموزش راه کار دوم را مد نظر قرار خواهیم داد:

تصوير


به عنوان یک قانون کلی همواره بایستی این نکته را مد نظر داشته باشیم که هرگاه چیزی از جنس یک string یا متن را به دیگر متغیرها مثلا یک int یا به عبارتی یک عدد صحیح اضافه کنیم جمع هر دوی آنها یک string یا متن خواهد بود. اکنون با دانستن این نکته که پارامتر مرتبط با متد setText می بایست یک string باشد به سادگی می توانیم دو علامت " " داخل پرانتز نوشته و یک علامت به علاوه پس آنها قرار داده و در نهایت نام متغیر خود را بنویسیم که با اینکار متد setText فکر خواهد کرد که داخل گیومه ها متنی وجود دارد که این مسئله هم می تواند درست باشد و هم نادرست. از دید اندروید درست است چرا که وجود این دو علامت را به عنوان یک متن تلقی خواهد کرد اما از دید ما نادرست است چرا که چیزی داخل گیومه ها نوشته نشده است. به هر حال این راه کاری است که از آن طریق می توان مشکل خود را حل کنیم. اکنون مجدد اپلیکیشن خود را اجرا می کنیم:

تصوير


همانطور که در تصویر فوق مشاهده می کنیم، با هفت بار ذکر گفتن هفت واحد به شمارنده اضافه شده است.

پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
1. چند راه برای افزودن یک واحد به متغیر counter وجود دارد؟
2. چرا کلاس TextView را بایستی final کرد؟
3. راه کاری که به منظور ننوشتن کلید واژه final است چیست؟
4. چرا اگر هیچ گونه string یی به عنوان پارامتر برای متد setText در نظر گرفته نشود اپلیکیشن ما به درستی کار نخواهد کرد؟

_________________
تصوير


بالا
 مشخصات  
 
 
 
پستارسال شده در: چهارشنبه 13 آذر 1392, 5:05 pm 

مورچه ارشد

نماد کاربر
offline


تاريخ عضويت: جمعه 8 دی 1391, 10:43 pm

پست ها : 1179

محل سکونت: نجف اباد - اصفهان

تشکر کرده: 3057 بار
تشکر شده: 1622 بار
آموزش برنامه نویسی اندروید - قسمت ۴۴: نحوه به روز رسانی متن داخل یک TextView


تصوير


اهداف آموزشی این قسمت عبارتند از:
1. نحوه به روز رسانی اطلاعات یک TextView در اندروید

هدف از این قسمت از آموزش فراگیری نحوه Update کردن عبارت داخل یک TextView است. در حقیقت از آنجا که در توسعه اپلیکیشن های اندرویدی مواقع بسیاری برای ما پیش می آید که نیاز داریم از طریق جاوا اطلاعات یک TextView را ویرایش کنیم، از اینرو فراگیری نحوه اجرای چنین کاری از اهمیت بسزایی برخوردار است.

همانطور که در آموزش هشتم توضیح داده شد اقدام به ساخت یک پروژه جدید اپلیکیشن اندرویدی در محیط اکلیپس می نماییم و نام آنرا Updating A View می گذاریم (لازم به ذکر است که در حین ساخت این پروژه برای Activity خود یا همان فایل جاوای اپلیکیشن هر نامی را می توانیم در نظر بگیریم اما نامی که در این آموزش در نظر خواهیم گرفت MainActivity خواهد بود. در واقع چنانچه تمایل دارید هم گام با این آموزش پیش روید پیشنهاد می شود نامی مشابه برای Activity اپلیکیشن خود در نظر بگیرید).

پس از ساخت پروژه و باز کردن فایل main.xml رابط گرافیک کاربر ما به شکل زیر خواهد بود:

تصوير


همانطور که می بینیم یک TextView به صورت خودکار توسط اکلیپس ایجاد شده و حاوی عبارت Hello World, MainActivity می باشد. اولین کاری می بایست انجام دهیم این است که برای این TextView یک id در نظر بگیریم. برای این منظور سه راه کار وجود دارد که یکی از طریق کلیک روی Tab مربوط به main.xml و اختصاص id به صورت دستی است و دیگری از طریق پنجره Properties است به این صورت که اول روی این TextView کلیک کرده سپس به پنجره Properties رجوع می کنیم و Value مرتبط با Id را تغییر می دهیم و در نهایت با راست کلیک کردن روی این TextView انتخاب گزینه Edit ID می باشد (کلیه روش های فوق در آموزش های پیشین به تفصیل مورد بررسی قرار گرفته اند. همچنین برای آشنایی با نحوه صحیح اختصاص id به آموزش های گذشته رجوع نمایید).

برای این TextView یک id تحت عنوان txt_TextOne در نظر می گیریم. حال قصد داریم تا سه دکمه تحت عناوین Narenji ، Nardebaan و Negahbaan روی UI قرار دهیم که کاربر با کلیک روی هر کدام از آنها بتواند آدرس وب سایت مرتبط را مشاهده نماید. اما پیش از این برای اینکه تمرینی از آموزش های گذشته داشته باشیم از یک سو و نیز اینکه رابط گرافیکی ما تا حدودی جذاب تر به نظر برسد از سوی دیگر قصد داریم تا رنگ Layout خود را به رنگی دلخواه تغییر داده و همچنین اندازه فونت و هم رنگ TextView خود را تغییر می دهیم تا بهتر روی رابط گرافیکی نمایان شود. پس از اجرای اپلیکیشن خود در این مرحله در Emulator با تصویر زیر مواجه خواهیم شد:

تصوير


به طور خلاصه می توان گفت که برای تغییر رنگ UI می بایست یک بار روی خود UI کلیک کرده و در پنجره Properties اقدام به تغییر Value مرتبط با Background نماییم. رنگ در نظر گرفته شده در تصویر فوق #ffde57 می باشد. به منظور تغییر مقادیر TextView هم به همین ترتیب اقدام خواهیم کرد به این صورت که پس از کلیک روی آن، Value های مرتبط با Text size و Text color را تغییر می دهیم. رنگ در نظر گرفته شده برای این متن مشکی بوده و اندازه آن 30dip است.

حال می بایست سه دکمه روی رابط گرافیکی ایجاد کنیم تحت عناوین Narenji ، Nardebaan و Negahbaan و به منظور لینک دادن به آنها در Activity خود نیاز است برای هر کدام از آنها یک id نیز در نظر بگیریم. برای هر کدام از آنها به ترتیب btn_narenjiButton و btn_nardebaanButton و btn_negahbaanButton را در نظر می گیریم و در ضمن نام هر یک از دکمه ها را نیز نامی مرتبط با id آنها انتخاب می کنیم:

تصوير


اگر به تصویر فوق خوب دقت کنیم می بینیم که متن داخل TextView ما به خط بعد انتقال داده شده است اما این در حالی است که پس از اجرای این اپلیکیشن در Emulator کل متن در یک خط نمایش داده می شود. در واقع علت این مسئله این است که همانطور که در تصویر فوق مشخص است نمایش UI این اپلیکیشن در محیط اکلیپس روی یک دستگاه 3.7 اینچی است اما این در حالی است که دستگاه مجازی که بنده ساخته ام یک تبلت است:

تصوير


همانطور که در تصویر فوق مشخص است با انتخاب یک دستگاه بزرگ تر این مشکل داخل اکلیپس هم رفع خواهد شد (لازم به ذکر است که این تغییر نمایش رابط گرافیک کاربر در محیط اکلیپس هیچ گونه ارتباطی با ابعاد واقعی رابط گرافیکی اپلیکیشن نداشته و صرفاً جهت نمایش در محیط اکلیپس می باشد):

تصوير


در این مرحله از آموزش کار ما در ارتباط به فایل main.xml به پایان رسیده وحال نوبت به برنامه نویسی در فایل MainActivity.java می رسد. برای این منظور این فایل را باز می کنیم.

تصوير


همانطور که در آموزش اپلیکیشن ذکر شمار توضیح داده شد، نیاز است تا یک شیئ از روی کلاس TextView اندروید ساخته و آن را به تنها TextView موجود روی رابط گرافیکی لینک داده، سپس سه شیئ از روی کلاس Button اندروید ساخته و آنها را به سه دکمه موجود روی رابط گرافیک لینک دهیم (در واقع علت اینکه به جای گفتن کلاس TextView می گوییم کلاس TextView اندروید این است که این کلاس فقط در SDK اندروید است و در یک پروژه جاوا چنین کلاسی اصلاً وجود خارجی نخواهد داشت. به عبارت دیگر درست است که از زبان جاوا برای توسعه اپلیکیشن خود استفاده می کنیم اما این در حالی است که برخی کلاس های مورد استفاده فقط مخصوص اندروید بوده و به کلاس های اختصاصی جاوا اضافه شده اند).

اکنون طبق آموزش های گذشته این کلاس ها را وارد Activity خود کرده و کد ما پس از تکمیل به صورت زیر خواهد بود:

تصوير

تصوير


در کد فوق برای مشخص سازی بخش های مختلف از کامنت های فارسی استفاده شده است (به منظور استفاده از کامنت های فارسی فقط به خاطر داشته باشیم که پس از وارد کردن کامنت فارسی به کد زمانیکه بخواهیم فایل خود را Save کنیم پنجره ای باز خواهد شد که در آن پنجره حتماً می بایست گزینه Save as UTF-8 را کلیک نماییم).

همانطور که در کد فوق مشخص است ابتدا یک شیئ تحت عنوان tv از روی کلاس TextView اندروید ساخته ایم و آن را به متنی که روی رابط گرافیک قرار دارد لینک داده ایم. سپس دکمه ای تحت عنوان orangeButton به معنی "دکمه نارنجی" ساخته ایم و آن را به دکمه ای لینک داده ایم که عنوان آن Narenji است. دکمه دومی که ایجاد کرده ایم ladderButton به معنی "دکمه نردبان" است و آن را هم به دکمه ای لینک داده ایم که عنوان آن Nardebaan است. در نهایت دکمه دیگری تحت عنوان guardButton به معنی "دکمه نگهبان" ساخته ایم که آنرا به دکمه Negahbaan ارتباط داده ایم.

اکنون تنها کاری که می بایست انجام دهیم این است که داخل متد onClick هر یک از دکمه ها آدرس وب سایت مرتبط را وارد کنیم تا به محض کلیک روی آن دکمه آدرس مرتبط به نمایش در آید. برای این منظور کد فوق را به شکل زیر تکمیل می کنیم:

تصوير


همانطور که در تصویر فوق مشخص است ابتدا نام شیئی که از روی کلاس TextView اندروید را ساختیم نوشته سپس از متد setText استفاده کرده و هر آنچه که می خواهیم داخل این متد قرار دهیم را مابین دو گیومه می نویسیم و در نهایت یک علامت ; قرار می دهیم. همانطور که در تصویر فوق مشخص شده است دور نام tv که نام شیئی است که برای کلاس TextView در نظر گرفته ایم نقطه چین قرار گرفته است. حال اگر نشانگر موس خود را روی آن قرار دهیم باکسی زرد رنگ نمایان خواهد شد که حاکی از آن است که نمی توانیم به یک شیئ غیر final که داخل متد قرار گرفته است دسترسی داشته باشیم. برای رفع این مشکل اکلیپس به ما پیشنهاد می دهد که کلاس TextView خود را به final تبدیل کنیم. حال با رفع این مشکل می توانیم دو دکمه دیگر را نیز تکمیل کرده و کد نهایی ما به صورت زیر خواهد بود:

تصوير

تصوير


همانطور که مشخص است کلید واژه final پیش از نام کلاس TextView اضافه شده و مابقی دکمه ها نیز تکمیل شده اند. حال برنامه خود را اجرا می کنیم:

تصوير


می بینیم که با کلیک روی دکمه Nardebaan متن اولیه TextView به آدرس سایت نردبان آپدیت می شود.

پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
1. آیا تغییر حالت نمایش رابط کاربر در محیط اکلیپس تغییری در رابط کاربر ایجاد می کند یا خیر؟
2. به چه شکل می توان دستگاه هایی با ابعداد مختلف را در خود محیط اکلیپس تست کرد؟
3. چرا می بایست کلاس TextView که در Activity اپلیکیشن یا همان فایل جاوا قرار دارد را final کرد؟
4. آیا اگر یک شیئ از روی کلاس Button اندروید بسازیم می توانیم از همان شیئ برای دکمه های مختلف استفاده کنیم یا خیر؟

_________________
تصوير


بالا
 مشخصات  
 
 
 
پستارسال شده در: چهارشنبه 13 آذر 1392, 5:10 pm 

مورچه ارشد

نماد کاربر
offline


تاريخ عضويت: جمعه 8 دی 1391, 10:43 pm

پست ها : 1179

محل سکونت: نجف اباد - اصفهان

تشکر کرده: 3057 بار
تشکر شده: 1622 بار
آموزش برنامه نویسی اندروید - قسمت ۴۵: نحوه گرفتن اطلاعات از یک EditText (بخش اول)


تصوير


اهداف آموزشی این قسمت عبارتند از:
1. معرفی EditText
2. تنظیمات مرتبط با EditText

پس از آشنایی با نحوه به روز رسانی متن داخل یک TextView در آموزش چهل و چهارم، در این آموزش خواهیم دید که به چه نحو می توان اطلاعات وارد شده توسط کاربر را گرفته و در اپلیکیشن مورد استفاده قرار داد.

در ابتدا نیاز است تا یک پروژه جدید تحت عنوان Getting User Input به معنی "دریافت اطلاعات ورودی کاربر" ایجاد می کنیم. سپس فایل main.xml که در زیرشاخه فولدر layout قرار دارد را باز می نماییم:

تصوير


همانطور که مشخص است طبق روال گذشته اکلیپس یک TextView به صورت خودکار حاوی عبارت Hello World, به علاوه نامی که برای Activity یی که برای اپلیکیشن خود انتخاب می کنیم که در این مثال MainActivity است ایجاد می کند. اکنون همانطور که در تصویر فوق مشخص است می بایست روی Tab مربوط به Text Fields کلیک کرده تا به کلیه EditText های موجود در اندروید دست پیدا کنیم:

تصوير


همانطور که در تصویر فوق مشخص است پس از کلیک کردن روی Tab مربوط به Text Fields برخی از گزینه ها قابل مشاهده هستند اما این در حالی است که تعداد گزینه های دیگری نیز وجود دارند اما هیچ اسکرولی برای دیدن مابقی موارد در این لیست دیده نمی شود. در حقیقت علت پنهان بودن این اسکرول این است که پنجره مربوط به UI فضای زیادی را اشغال کرده است و همین مسئله سبب شده که اسکرول پنجره Text Fields پنهان شود. برای رفع این مشکل مطابق تصویر زیر عمل خواهیم کرد:

تصوير


همانطور که در تصویر فوق مشخص است، پس از قرار دادن نشانگر موس خود روی خطی که به صورت عمودی پنجره مربوط به UI را از پنجره مربوط به Widget ها مجزا می سازد، نشانگر موس به یک فلش سفید رنگ دو طرفه مبدل خواهد شد. حال با پایین نگه داشتن دکمه سمت چپ موس خط افقی را گرفته و کمی به سمت راست می کشیم و سپس دکمه موس خود را رها می کنیم. حال با وضعیت زیر مواجه خواهیم شد:

تصوير


همانطور که می بینیم اسکرول مربوط به پنجره Widget ها نمایان می شود. حال از این لیست گزینه ای تحت عنوان Plain Text را پیدا نموده و آن را به صورت Drag and Drop روی رابط کاربری قرار می دهیم:

تصوير


به طور خلاصه می توان گفت که واژه انگلیسی Plain به معنی "ساده" است. در واقع با به کارگیری از این نوع EditText می توانیم این امکان را به کاربر بدهیم تا هر چیزی که تمایل داشت را وارد دستگاه خود نماید. در صورتیکه به لیست زیرشاخه Text Fields نگاه کنیم خواهیم دید که دارای گزینه های بسیاری است. به طور مثال اگر از گزینه Date استفاده کنیم این امکان را به کاربر خواهیم داد تا فقط بتواند تاریخ را وارد دستگاه کند و یا اگر از Number استفاده کنیم کاربر به هیچ وجه نخواهد توانست چیزی به جزء عدد وارد EditText نماید (در آموزش های آتی بسته به نیاز اپلیکیشن از گزینه های مناسب استفاده خواهیم کرد).

پس از قرار دادن یک EditText روی UI همانطور که قبلاً آموزش داده شد یک دکمه نیز روی UI قرار می دهیم:

تصوير


در ادامه نیاز است تا برای هر یک از این سه View یک id در نظر بگیریم. برای این منظور از آنجا که در این اپلیکیش از هر نوع View فقط یک عدد موجود است پس نیازی به بکارگیری از پیشوند در id ها نیست و صرفاً برای TextView نام text را به عنوان id در نظر می گیریم، برای دکمه id یی تحت عنوان button را در نظر می گیریم و برای EditText نام input را به عنوان id در نظر می گیریم.

اکنون به نظر می رسد بتوانیم خصوصیات هر یک از سه View یی که روی رابط گرافیکی کاربر قرار گرفته است را اصطلاحاً Customize کنیم اما از آنجا که این مسئله منجر به تکرار مکررات خواهد شد از اینکار خودداری کرده و صرفاً برخی تنظیمات مربوط به EditText را کانون توجه قرار می دهیم. حال پس از کلیک کردن روی EditText به پنجره Properties رجوع می کنیم:

تصوير


یکی از متدهای بسیار کاربردی در ارتباط با EditText ها متد Hint است. معنی لغوی این واژه "ایما و اشاره" است. در واقع اگر توجه کرده باشیم در برخی از اپلیکیشن ها جایی که می بایست اطلاعاتی را وارد کنیم در Field مربوطه به رنگ مثلاً خاکستری کم رنگ نوشته شده است که مثلاً "نام خود را وارد کنید:" و به محض اینکه روی آن EditText کلیک می کنیم متن کم رنگ از بین رفته و می توانیم نام خود را وارد کرده و نام ما جایگزین متن قبلی خواهد شد. چنین عملکردی اصطلاحاً Hint نام دارد. به عبارت دیگر به کاربر می فهمانیم که در هر Field یی چه اطلاعاتی را می بایست وارد کند. برای EditText این اپلیکیشن عبارت Please enter your text را به معنی "لطفاً متن خود را وارد کنید" به عنوان Hint در نظر می گیریم. حال با بازگشتن به UI خواهیم دید که این Hint ایجاد شده است:

تصوير


اکنون می بایست به فایل جاوای اپلیکیشن رجوع کرده و بخش برنامه نویسی اپلیکیشن را به اتمام برسانیم اما پیش از شروع اینکار نیاز است تا مسئله ای را مد نظر قرار دهیم. در واقع در پروژه اپلیکیشن ذکر شمار نحوه به کار گیری از کلاس Button و همچنین TextView به این صورت بود که آنها را داخل متد onCreate تعریف کردیم. در این پروژه قصد داریم تا روش دیگری را نیز مورد بررسی قرار دهیم که به نظر می رسد نسبت به روش اولی که در پروژه ذکر شمار مورد استفاده قرار دادیم از معماری برنامه نویسی بهتری برخوردار است. به عبارت دیگر در این آموزش قصد نداریم تا چیز جدیدی در ارتباط با کلاس های Button و TextView فرا بگیریم بلکه مقصود نحوه نوشتن و همچنین جایگاه این کلاس ها در Activity است که در آموزش آینده به تفصیل مورد بررسی قرار خواهیم داد.

پس از مطالعه این آموزش انتظار می رود بتوانیم به سؤالات زیر پاسخ بدهیم:
1. علت وجود EditText های متفاوتی مثلاً برای تاریخ، عدد، ایمیل و غیره چیست؟
2. هدف از به کار گیری Hint در Field هایی که کاربر می بایست چیزی را وارد نماید چیست؟
3. به چه شکل می توان یک Hint برای EditText یی در اندروید در نظر گرفت؟

_________________
تصوير


بالا
 مشخصات  
 
 
 
پستارسال شده در: سه شنبه 2 تیر 1394, 3:54 pm 

مورچه تازه وارد

No Avatar
offline


تاريخ عضويت: سه شنبه 2 تیر 1394, 3:52 pm

پست ها : 1

تشکر کرده: 0 بار
تشکر شده: 1 بار
آموزش های خوبی هستن ممنون واقعا زحمت کشیدین
از لینک زیر هم می تونین آموزش های خوبی رو به صورت ویدئوئی مشاهده کنین
www.code-academy.ir



برای این پست از برنامه نویس تشکر شده است : paeez
  امتیاز: 4.35%
بالا
 مشخصات  
 
 
 
ارسال مبحث جديد پاسخ به مبحث  [ 55 پست ]  برو به صفحه قبلي  1, 2, 3, 4, 5, 6

اطلاعات

تعداد صفحات: صفحه 6 از 6

    

تعداد پست ها:  55 پست


کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 1 مهمان مدير انجمن: شما نمي توانيد مبحث جديدي در اين انجمن ايجاد کنيد
شما نمي توانيد به مباحث در اين انجمن پاسخ دهيد
شما نمي توانيد پست هاي خود را در اين انجمن ويرايش کنيد
شما نمي توانيد پست هاي خود را در اين انجمن حذف کنيد
جستجو براي:
انتقال به:  
نمايش پست ها از پيشين:  مرتب سازي بر اساس  
cron

کپی رایت

 
yukari

Powered by : phpBB | Style by: Meis@M & GOD send
Persian Translation : www.phpBB.Maghsad.com | New Zeland Shuttle