繁体   English   中英

如何通过导航菜单项设置OnClickListener

[英]How to set OnClickListener by Navigation menu item

我想在菜单项上设置“单击监听器”,同时单击该菜单项,然后直接显示对话框或任何其他活动,但是如何...?

Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(new View.OnClickListener() {
      @Override
        public void onClick(View v) {
            UpdateChecker.checkForDialog(Home.this);
        }
    });

您创建菜单选项:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_menu, menu);
    return true;
}

然后,将以下用于菜单项的单击事件:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case R.id.button1:
        UpdateChecker.checkForDialog(Home.this);
        return true;
    case R.id.option_two:
        //do something else
        return true;
...
    default:
        return super.onOptionsItemSelected(item);
    }
}

然后从开发者网站选择适合您风格的对话框,例如,标准的警告对话框为:

new AlertDialog.Builder(context)
    .setTitle("Your Title here")
    .setMessage("Your message here")
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) { 
            // Do something
        }
     })
    .setNegativeButton(android.R.string.no, null)
    .setIcon(android.R.drawable.your_custom_drawbale)
    .show();

这将起作用:

在您的menu.xml中:

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
            android:id="@+id/rate_us"
            android:title="Rate us"/>
</menu>

在主要活动中:

class MainActivity : AppCompatActivity(){


 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
 }


 override fun onCreateOptionsMenu(menu: Menu?): Boolean {
            menuInflater.inflate(R.menu.settings, menu);
            return super.onCreateOptionsMenu(menu) 
 }
 override fun onOptionsItemSelected(item: MenuItem): Boolean {
            val id = item.itemId
            when (id) {
                R.id.rate_us -> {
                      ///YOUR CODE 
                      //
                  return true 
                }
              else -> return 
                  super.onOptionsItemSelected(item) 
              } 
  }


 }

在您的菜单XML中添加此

<item
android:onClick="clickME">
</item>

在您的活动中创建一个空白

private void clickME(MenuItem menuItem){

}

首先,您需要在活动中实现NavigationView.OnNavigationItemSelectedListener

然后,在onCreate()方法中,您需要初始化导航菜单:

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

您还需要@overwrite onNavigationItemSelected(MenuItem item)像这样:

@overwrite
public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav_item_1) {
            //do whatever you want
        } else if (id == R.id.nav_item_2) {
            //do whatever you want
        } else if (id == R.id.nav_item_3) {
           //do whatever you want
        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
}
 bottomNavig.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
            if (menuItem.getItemId() == R.id.wallet) {

                menuItem.setChecked(true);
            } else if (menuItem.getItemId() == R.id.home) {

                menuItem.setChecked(true);
            }
            return false;
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM