آموزش خلاصه کردن کد ها و مدیریت Layout ها + نرم افزار رایگان کمکی
همانطور که می دانید به صورت عادی برای ایجاد یک متغیر مرتبط با یک کامپوننت (مثلا دکمه) از روش زیر استفاده می کنیم.
Button btn1; b1= (Button) findViewById(R.id.b1);
حالا اگر تعداد زیادی کامپوننت در صفحه وجود داشته باشد مقدار زیادی از کد ها صرف مقدار دهی اولیه و تعریف متغیر های متناسب با آنها می شود که علاوه زمان بر بودن تایپ این کد ها ، گاهی اشتباهات انسانی باعث خطاهایی می شود که ممکن است وقت بیشتری را برای آن صرف کنیم.
همچنین شلوغ شدن کد ها و گاهی فراموش کردن نام برخی از کامپوننت ها نیز خود دردسر دیگری است که اغلب با آنها مواجه هستیم.
برای رفع این مشکل کتابخانه ها و یا فریمورک های های مختلفی مثل Guice ویا RoboGuice و یا حتی Dagger بسیار کار آمد هستند. اما گاهی پیچیدگی این کتابخانه ها کمی برای تازه کار ها سخت است. (حرفه ای ها می توانند الان از Dagger استفاده کنند)
من قبل از روی کار آمدن روش های جدیدی مثل Dagger خودم به فکر نوشتن یک Code Generator افتادم که در مرتب کردن و سرعت دادن به کدهایم کمکم کند. (البته تا کنون خیلی جاها این کار را انجام داده ام) چیزی که اینجا معرفی می کنم برنامه ای است که خودم نوشته ام و با توجه به نیاز خودم آن را پیاده کرده ام. اما با توجه به اینکه مدتی از آن می گذرد و تقریبا بسیاری از شرایط و باگهایی که پیش آمده را در آن رفع کرده ام فکر کردم شاید به درد شما نیز بخورد. (مطمئنم می خورد)
این را بدانید که اگر از این روش استفاده کنید دیگر تقریبا هیچ وقت findViewById را خودتان نخواهید نوشت
من ادامه این مطلب را در پست های بعدی قرار می دهم و از مدیران خواهشمندم Tag قرمز بگذارند تا فقط برای اعضای فعال قابل مشاهده باشد. این را به نیت قدردانی از آموزش های جناب آقاجانی و در جهت حمایت از خریداران پکیج های uncox با شما به اشتراک می گذارم.
لطفا برای تشکر از دکمه Like استفاده کنید و تنها سوالات خود را به صورت کامنت درج کنید.
متشکرم
این فایل را دانلود کنید.
پس از اجرا برنامه ای شبیه تصویر زیر باز می شود.
مراحل کار را با توجه به تصویر بالا به این صورت انجام دهید.
1- آدرس پوشه Layout پروژه اندروید خود را انتخاب کنید. (فعلا فقط از یک پوشه پشتیبانی می شود)
2- یک کلاس به نام AllViews.java درون پروژه خود ایجاد کنید.سپس آن را در قسمت 2 انتخاب کنید.
public class AllViews {
}
3- دکمه Do All را کلیک کنید.
تمام شد!
حالا هر جا که نیاز دارید یک Layout استفاده کنید کافی است یک متغیر از کلاس معادل نام Layout مورد نظر را که در AllViews تعریف شده تعریف کنید. بدین ترتیب کل اشیاء درون آن Layout خود به خود تعریف می شوند.
مثال:
فرض کنیم یک Activity داریم به اسم ActivityMain . می خواهیم به کل کامپوننت های آن دسترسی پیدا کنیم.
بعد از ساختن layout مربوط به این اکتیویتی ، مراحل 1 و 2 و 3 بالا را انجام دهید. (در هر پروژه یکبار مراحل بالا را انجام دهید و هرگاه یک layout جدید طراحی کردید فقط دوباره دکمه Do All را بزنید.)
سپس :
فقط کافی است داخل کلاس ActivityMain یک متغیر تعریف کنیم و آن را new کنیم.
public class ActivityMain extends Activity {
AllViews.activity_main aos; // ActivityObjects
@Override
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
aos = new AllViews.activity_main(this);
...
}
}
همین !
تمام اشیاء درون layout ای که انتخاب کرده اید تعریف شدند.
حالا هرجا که نیاز داریم آبجکت هایی را که داخل Layout مربوط به ActivityMain تعریف کرده ایم به راحتی توسط متغیر aos (اسم دلخواه) صدا می کنیم.
aos.button1.setText("OK");
aos.textView1.setText("This is test");
مزیت کدهایی که درون کلاس AllViews نوشته می شود این است که هم در Activity ها ، هم در Dialog ها ، هم در Fragment ها و هم در Adapter ها می توانید با خیال راحت از آن استفاده کنید. هرجا بودید فقط this را به آن پاس بدهید.
هر وقت هم دلتان خواست Layout هایتان را دستکاری کنید. فقط کافی است برنامه را دوباره اجرا کنید و تنها دکمه Do All را دوباره بزنید. خودش کد ها را درون سورس شما جایگذاری می کند. دکمه Copy برای زمانی است که بخواهید دستی متن قسمت 4 در تصویر بالا را کپی کنید. این متن همانی است که درون کلاس AllViews نوشته می شود.
نکته : در تصویر بالا قسمت 5 یک قسمت وجود دارد که می توانید سورس یک Layout دلخواه را در آن کپی کنید سپس با زدن دکمه Do کلاس مربوط به فقط همان Layout را به شما می دهد تا هرجا مایل بودید از آن استفاده کنید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
