آموزش برنامه نویسی اندروید (Android)
۴۱۹ آموزش
نمایش دسته بندی ها (۴۱۹ آموزش)

اجرای صحیح روش های onCreateOptionsMenu و onOptionsItemSelected هنگام استفاده از ActionBarSherlock ، برای نمایش و تعیین عملکرد action bar ، در برنامه نویسی اندروید

همان طور که می دانید، ActionBarSherlock برای ساخت action bar و Tab بندی های سازگار با نسخه های API پایین تر از 11 از اندروید به کار می رود (برخی دیگر، تنها برای نسخه های بالاتر از 11 درست عمل می کنند). اما یکی از مواردی که باید به آن توجه داشت این است که هنگام استفاده از ActionBarSherlock ، کدنویسی برای روش های onCreateOptionsMenu و onOptionsItemSelected کمی متفاوت خواهد بود، بنابراین در این مبحث، به این موضوع می پردازیم (همان طور که می دانید این دو روش برای ساخت action bar و تعریف نحوه عملکرد آن می باشند).

فرض کنید با ActionBarSherlock ، یک Activity شامل سه Fragment ساخته ایم (یعنی یک Tab بندی شامل سه Tab). اکنون می خواهیم که برای آن Tab ها ، یک action bar مشترک طراحی کنیم که چند item داشته باشد و با اشاره بر روی هر item ، کاربر به یک Activity جدید منتقل شود. برای این منظور، در Activity مورد نظر (دقت کنید که در کدهای Activity ، نه در کدهای Fragment ها)، روش های onCreateOptionsMenu و onOptionsItemSelected را به صورت زیر می نویسیم :


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.itemActivity2:
        //do something when this button is pressed
        startActivity(new Intent(Activity1.this, Activity2.class));
        return true;
    case R.id.itemActivity3:
        //do something when this button is pressed
        startActivity(new Intent(Activity1.this, Activity3.class));
        return true;
    default:
        return true;
    }  
}

در کدهای بالا، فرض کرده ایم که در پوشه menu از پروژه اندروید، فایلی با نام menu.xml داریم (که با R.menu.menu به آن ارجاع داده ایم).

خوب اکنون باید به نکات مهم برای عملکرد صحیح کدها اشاره کنیم :

همان طور که می دانید، ما معمولا با فشار دادن همزمان کلیدهای Ctrl و Shift و O (بخوانید او ، نه صفر)، تمامی package های لازم را وارد (import) می کنیم، اما گاهی این مورد، درست عمل نمی کند. یکی از package هایی که اتفاقا برای اجرای کدهای بالا لازم است، اما به درستی وارد (import) نمی شود را در زیر می نویسیم :


import com.actionbarsherlock.view.Menu;

بنابراین کد بالا را به صورت دستی در کدها کپی کنید (در بخش وارد کردن package ها) و اگر package دیگری با آن تداخل (conflict) دارد، آن package دیگر را حذف کنید.

نکته دیگر که بد نیست به آن توجه کنید این است که ما قبلا (در مباحث دیگر)، ابتدای روش onOptionsItemSelected را به صورت زیر می نوشتیم :


public boolean onOptionsItemSelected(MenuItem item) {

اما برای ActionBarSherlock ، آن را به صورت زیر نوشته ایم (به این تفاوت دقت کنید) :


public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {

همچنین توجه داشته باشید که در کدهایی که نوشته ایم، برای روش onOptionsItemSelected ، تعدادی item دلخواه را در نظر گرفته ایم که تنها برای درک چگونگی تعیین عملکرد action bar ، هنگام اشاره بر روی item های action bar می باشد و شما باید آنها را مطابق موارد مورد نظر خود، تغییر بدهید.

نویسنده علیرضا گلمکانی
شماره کلید 840
گزینه ها
به اشتراک گذاری (Share) در شبکه های اجتماعی
نظرات 0 0 0

ارسال نظر جدید (بدون نیاز به عضو بودن در وب سایت)