رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

مشکل در کلیک روی آیتم های نویگیشن دراور


پست های پیشنهاد شده

سلام

من برای آیتم های نویگیشن دراور از منو استفاده کردم از طرفی یک منو دیگه هم دارم (menu_item) که فقط یک آیتم داره و باکلیک روی آن وارد اکتیویتی دیگه ای میشه...

داخل متد onCreateOptionsMenu(Menu menu)، منوی menu_item رو inflate کردم

و در متد onOptionsItemSelected(MenuItem item) دستور اینتنت نوشتم ...

حالا برای نویگیشن دراور چطوری باید برای آیتم های منو خاصیت کلیک بنویسم در حالی که توی onCreateOption یک منو دیگه رو inflate کردم

این طوری مینویسم کار نمیکنه:

  @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_item, menu);

        return super.onCreateOptionsMenu(menu);
    }

    /*public boolean onCreateOptionsMenu2(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.navigation_item, menu);

        return super.onCreateOptionsMenu(menu);
    }*/

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        switch (id)
        {
            case R.id.action_search:
                Intent intent= new Intent(MainActivity.this,Search.class);
                MainActivity.this.startActivity(intent);
                break;
            case R.id.khoruj:
               // MainActivity.this.closeOptionsMenu();
                Toast.makeText(context,"Exit",Toast.LENGTH_SHORT).show();
                break;
        }
     
        return true;
    }

راهنمایی کنید ممنون میشم

ویرایش شده توسط scientific
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 19 ساعت قبل، scientific گفته است :

سلام

من برای آیتم های نویگیشن دراور از منو استفاده کردم از طرفی یک منو دیگه هم دارم (menu_item) که فقط یک آیتم داره و باکلیک روی آن وارد اکتیویتی دیگه ای میشه...

داخل متد onCreateOptionsMenu(Menu menu)، منوی menu_item رو inflate کردم

و در متد onOptionsItemSelected(MenuItem item) دستور اینتنت نوشتم ...

حالا برای نویگیشن دراور چطوری باید برای آیتم های منو خاصیت کلیک بنویسم در حالی که توی onCreateOption یک منو دیگه رو inflate کردم

این طوری مینویسم کار نمیکنه:


  @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_item, menu);

        return super.onCreateOptionsMenu(menu);
    }

    /*public boolean onCreateOptionsMenu2(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.navigation_item, menu);

        return super.onCreateOptionsMenu(menu);
    }*/

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        switch (id)
        {
            case R.id.action_search:
                Intent intent= new Intent(MainActivity.this,Search.class);
                MainActivity.this.startActivity(intent);
                break;
            case R.id.khoruj:
               // MainActivity.this.closeOptionsMenu();
                Toast.makeText(context,"Exit",Toast.LENGTH_SHORT).show();
                break;
        }
     
        return true;
    }

راهنمایی کنید ممنون میشم

 

 

به این صورت انجام بدید :


        navigation_menu.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                switch (item.getItemId()) {

                    case R.id.item_exit:

                        drawer.closeDrawer(GravityCompat.START);
                       exit_dialog();

                        break;

             


                }


                return false;
            }
        });

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

آخه برای قسمت آیتم های نویگیشن یک "menu " ساختم به اسم:navigation_item

(درواقع هدرش یک فایل xml هست و ایتم هاش منو)

این

setNavigationItemSelectedListener

رو نمی شناسه

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_gravity="right">
   <item android:title="@string/Settings">
      <menu>
        <item android:title="تنظیمات"
          android:id="@+id/tanzimat"
          android:icon="@drawable/ic_settings_pink_500_24dp"/>
      </menu>
   </item>

    <item android:title="درباره ما"
        android:id="@+id/darbarema"
        android:icon="@drawable/ic_exit_to_app_pink_500_24dp"/>
    <item android:title="خروج"
        android:id="@+id/khoruj"
        android:icon="@drawable/ic_perm_contact_calendar_pink_500_24dp"
        android:orderInCategory="100"/>

</menu>

 

ویرایش شده توسط scientific
لینک ارسال
به اشتراک گذاری در سایت های دیگر

درواقع خاصیت Select رو برای آیتم های منو باید نوشت فکرکنم

چون آیتم های نویگیشنم یک menu هستند...

حالا باید چطوری خاصیت کلیک بزارم براش؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 20 ساعت قبل، Farzad Sarseifi گفته است :

 

 

به این صورت انجام بدید :



        navigation_menu.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                switch (item.getItemId()) {

                    case R.id.item_exit:

                        drawer.closeDrawer(GravityCompat.START);
                       exit_dialog();

                        break;

             


                }


                return false;
            }
        });

 

درواقع خاصیت Select رو برای آیتم های منو باید نوشت فکرکنم

چون آیتم های نویگیشنم یک menu هستند...

حالا باید چطوری خاصیت کلیک بزارم براش؟


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_gravity="right">
   <item android:title="@string/Settings">
      <menu>
        <item android:title="تنظیمات"
          android:id="@+id/tanzimat"
          android:icon="@drawable/ic_settings_pink_500_24dp"/>
      </menu>
   </item>

    <item android:title="درباره ما"
        android:id="@+id/darbarema"
        android:icon="@drawable/ic_exit_to_app_pink_500_24dp"/>
    <item android:title="خروج"
        android:id="@+id/khoruj"
        android:icon="@drawable/ic_perm_contact_calendar_pink_500_24dp"
        android:orderInCategory="100"/>

</menu>

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 12 دقیقه قبل، scientific گفته است :

درواقع خاصیت Select رو برای آیتم های منو باید نوشت فکرکنم

چون آیتم های نویگیشنم یک menu هستند...

حالا باید چطوری خاصیت کلیک بزارم براش؟

سلام دوست عزیز شما میتونی به این صورت عمل کنی اکتیویتی به این صورت تعریف کن 

public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

@Override
    public boolean onNavigationItemSelected(MenuItem item) {
        drawerLayout.closeDrawers();
        switch (item.getItemId()) {
            case R.id.plants_drawer: {
                Intent intent = new Intent(BaseActivity.this, PlantActivity.class);
                startActivity(intent);
                return true;
            }

            case R.id.fishes_drawer:
                Intent intent = new Intent(BaseActivity.this, FishActivity.class);
                startActivity(intent);
                return true;
          /*  case R.id.pest_algae_drawer:
                Toast.makeText(getApplicationContext(), "pest",
                        Toast.LENGTH_SHORT).show();
                return true;*/
            case R.id.calculator_drawer:
                Toast.makeText(getApplicationContext(), "calculator",
                        Toast.LENGTH_SHORT).show();
                return true;
            default:
                return true;
        }

    }

}

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 17 دقیقه قبل، a.khosroabadi گفته است :

سلام دوست عزیز شما میتونی به این صورت عمل کنی اکتیویتی به این صورت تعریف کن 


public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{

@Override
    public boolean onNavigationItemSelected(MenuItem item) {
        drawerLayout.closeDrawers();
        switch (item.getItemId()) {
            case R.id.plants_drawer: {
                Intent intent = new Intent(BaseActivity.this, PlantActivity.class);
                startActivity(intent);
                return true;
            }

            case R.id.fishes_drawer:
                Intent intent = new Intent(BaseActivity.this, FishActivity.class);
                startActivity(intent);
                return true;
          /*  case R.id.pest_algae_drawer:
                Toast.makeText(getApplicationContext(), "pest",
                        Toast.LENGTH_SHORT).show();
                return true;*/
            case R.id.calculator_drawer:
                Toast.makeText(getApplicationContext(), "calculator",
                        Toast.LENGTH_SHORT).show();
                return true;
            default:
                return true;
        }

    }

}

 

نوشتم ولی موقع کلیک هیچ اتفاقی نمیفته شما آیتم های نویگیشنتون رو با menu ساخته بودید؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، scientific گفته است :

نوشتم ولی موقع کلیک هیچ اتفاقی نمیفته شما آیتم های نویگیشنتون رو با menu ساخته بودید؟

بله با منو ساخته بودم.

id هارو درست میدین چون به نظرم نباید مشکلی داشته باشه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

البته من همون activityMain رو implement کردم از

NavigationView.OnNavigationItemSelectedListener

چون نویگیشنم رو توی setContentView اکتیویتی اصلیم قرار دادم

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در هم اکنون، a.khosroabadi گفته است :

بله با منو ساخته بودم.

id هارو درست میدین چون به نظرم نباید مشکلی داشته باشه.

بله درست میدم فعلا برای یک id می نویسم:

 @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item)
    {
        mDrawerlayout.closeDrawers();
        switch (item.getItemId()) {
            case R.id.darbare:
            {
                Intent intent = new Intent(MainActivity.this, DarbareActivity.class);
                startActivity(intent);
                return true;
            }

            /*case R.id.fishes_drawer:
                Intent intent = new Intent(BaseActivity.this, FishActivity.class);
                startActivity(intent);
                return true;
          *//*  case R.id.pest_algae_drawer:
                Toast.makeText(getApplicationContext(), "pest",
                        Toast.LENGTH_SHORT).show();
                return true;*//*
            case R.id.calculator_drawer:
                Toast.makeText(getApplicationContext(), "calculator",
                        Toast.LENGTH_SHORT).show();
                return true;*/
            default:
                return true;
        }

    }

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، scientific گفته است :

البته من همون activityMain رو implement کردم از


NavigationView.OnNavigationItemSelectedListener

چون نویگیشنم رو توی setContentView اکتیویتی اصلیم قرار دادم

این کد کامل این اکتیویتی من هستش.

public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener  {

    protected Toolbar mToolbar;
    protected DrawerLayout drawerLayout;
    protected NavigationView navigationView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
      /*  mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
*/

        drawerLayout = (DrawerLayout) findViewById(R.id.home_activity_drawer_layout);

        if (getWindow().getDecorView().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
            getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
        }



        navigationView = (NavigationView) findViewById(R.id.navigation_view);
        navigationView.setNavigationItemSelectedListener(this);

    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        drawerLayout.closeDrawers();
        switch (item.getItemId()) {
            case R.id.plants_drawer: {
                Intent intent = new Intent(BaseActivity.this, PlantActivity.class);
                startActivity(intent);
                return true;
            }

            case R.id.fishes_drawer:
                Intent intent = new Intent(BaseActivity.this, FishActivity.class);
                startActivity(intent);
                return true;
          /*  case R.id.pest_algae_drawer:
                Toast.makeText(getApplicationContext(), "pest",
                        Toast.LENGTH_SHORT).show();
                return true;*/
            case R.id.calculator_drawer:
                Toast.makeText(getApplicationContext(), "calculator",
                        Toast.LENGTH_SHORT).show();
                return true;
            default:
                return true;
        }

    }

    private void showDrawer() {
        drawerLayout.openDrawer(GravityCompat.START);
    }

    private void hideDrawer() {
        drawerLayout.closeDrawer(GravityCompat.START);
    }

    @Override
    public void onBackPressed() {
        if (drawerLayout.isDrawerOpen(GravityCompat.START))
            hideDrawer();
        else
            super.onBackPressed();
    }

    @Override
    protected void attachBaseContext(Context context){
        super.attachBaseContext(CalligraphyContextWrapper.wrap(context));
    }


}

این قسمت رو هم اضافه کنید. من فراموش کردم متاسفانه

        navigationView.setNavigationItemSelectedListener(this);

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 16 دقیقه قبل، a.khosroabadi گفته است :

این کد کامل این اکتیویتی من هستش.


public class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener  {

    protected Toolbar mToolbar;
    protected DrawerLayout drawerLayout;
    protected NavigationView navigationView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);
      /*  mToolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
*/

        drawerLayout = (DrawerLayout) findViewById(R.id.home_activity_drawer_layout);

        if (getWindow().getDecorView().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
            getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
        }



        navigationView = (NavigationView) findViewById(R.id.navigation_view);
        navigationView.setNavigationItemSelectedListener(this);

    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        drawerLayout.closeDrawers();
        switch (item.getItemId()) {
            case R.id.plants_drawer: {
                Intent intent = new Intent(BaseActivity.this, PlantActivity.class);
                startActivity(intent);
                return true;
            }

            case R.id.fishes_drawer:
                Intent intent = new Intent(BaseActivity.this, FishActivity.class);
                startActivity(intent);
                return true;
          /*  case R.id.pest_algae_drawer:
                Toast.makeText(getApplicationContext(), "pest",
                        Toast.LENGTH_SHORT).show();
                return true;*/
            case R.id.calculator_drawer:
                Toast.makeText(getApplicationContext(), "calculator",
                        Toast.LENGTH_SHORT).show();
                return true;
            default:
                return true;
        }

    }

    private void showDrawer() {
        drawerLayout.openDrawer(GravityCompat.START);
    }

    private void hideDrawer() {
        drawerLayout.closeDrawer(GravityCompat.START);
    }

    @Override
    public void onBackPressed() {
        if (drawerLayout.isDrawerOpen(GravityCompat.START))
            hideDrawer();
        else
            super.onBackPressed();
    }

    @Override
    protected void attachBaseContext(Context context){
        super.attachBaseContext(CalligraphyContextWrapper.wrap(context));
    }


}

این قسمت رو هم اضافه کنید. من فراموش کردم متاسفانه


        navigationView.setNavigationItemSelectedListener(this);

 

خیلی خیلی ممنونم درست شد...

فقط این کد

drawerLayout.closeDrawers();

برای چی بود ؟ برای من فورس کلوز میدادو برنامم رو می بست حذفش کردم

و یه سوال دیگه اگر بخوام با آیتم خروج برنامم بسته بشه باید چی بنویسم

ویرایش شده توسط scientific
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 2 دقیقه قبل، scientific گفته است :

خیلی خیلی ممنونم درست شد...

فقط این کد


drawerLayout.closeDrawers();

برای چی بود ؟ برای من فورس کلوز میدادو برنامم رو می بست حذفش کردم

و یه سوال دیگه اگر بخوام با آیتم خروج برنامم بسته بشه باید چی بنویسم

این کد برای بسته شدن دراور هستش.

 

برای اینکه از برنامه خارج بشین میتونید از متدهای زیر استفاده کنید

finish();
System.exit(0);

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...