[英]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.