جلسه ۵ شروع ۱۸:۱۱ ساخت منو
دو روش برای ساخت این منو وجود داره
۱- با xml
تو resources کلیک راست add new resource file->menu
میخوای آیتم بهش اضافه کنی:
از تو پالت گوش آیتم رو می گیری می کشی رو منو ولش می کنی
اگه خواستی یکی از اینا خودش منو باشه به جای آیتم یه منو می گیری می بری زیر اون آیتمه
حالا اینو همین طوری بذاری اجرا نمیشه باید بری تو main activity
یه متدی بسازی مثل همون onCreate (یه متد جدا و جدید و خارج از قبلیا)
می زنی oncreateoption میاره:
@Override public boolean onCreateOptionsMenu(Menu menu) { return super.onCreateOptionsMenu(menu); }
بعد میری توش می نویسی getmuneinflater جلوشم یه . می زنی inflate
این میره از تو اولی میاره که بریزه تو دومی . دومی بهش میگیم بیار بریز تو همین منو که بالای سرت ورودی می گیری
به این ترتیب در میاد:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main,menu); return super.onCreateOptionsMenu(menu); }
بعضی وقتا لازمه برا مثلا کسی که عضوه یه نوع منوهایی رو نشون بدیم ب بقیه ندیم می شه همه اینا رو گروپ کرد راحت
<group android:id="@+id/groupname1" android:visible="false" >
حالا مثلا میخوای با کلیک یکی از این آیتما یه اتفاقی بیفته مثلا اسمشو Toast کنه برامون
تو جاوا main activity:
public boolean havij(MenuItem item){ Toast.makeText(this,item.getTitle(),Toast.LENGTH_SHORT).show(); return true; }
و توی xml منو تو اسم آیتم onclick اصفه می کنی:
<item android:title="Negar" android:onClick="havij"> </item>
که البته استاد جای havij نوشته بود itemClick
این android:onClick="havij"رو تو همه آیتمای دیگتم می تونی کپی کنی اون وقت با کلیک رو هر آیتم اسمشو می نویسه
راه دوم این که با کلیک یکی از این آیتما یه اتفاقی بیفته:
میری تو جاوا main activity می نویسی onOptions
و توستشم می نویسی حاصل همچین چیزی میشه:
@Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { Toast.makeText(this, item.getTitle(),Toast.LENGTH_SHORT).show(); return super.onOptionsItemSelected(item); }
دیگه از این روش که بری نیازی نیست تو xml هویج بذاری
اما اگه بخوای با آیدی تشخیص بدی رو کدوم کلیک شده بوده اولا تو xml باید براش آیدی بذاری بعدم اینو اضافه می کنی
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId()==R.id.negaritem)
Toast.makeText(this, item.getTitle(),Toast.LENGTH_SHORT).show();
return super.onOptionsItemSelected(item);
}