Android Studio菜单项单击“不工作”
因此,我的菜单项除了在单击时显示放大的动画外,不会做任何事情。我正试图和他们一起开始一项新的活动,我在一个活动上贴了一个吐司,看看我是否做了什么,但我什么也没有得到。这是一个普遍的问题吗 第17版 targetSdkVersion 27 布局Android Studio菜单项单击“不工作”,android,menu,menuitem,bottomnavigationview,android-bottom-nav-view,Android,Menu,Menuitem,Bottomnavigationview,Android Bottom Nav View,因此,我的菜单项除了在单击时显示放大的动画外,不会做任何事情。我正试图和他们一起开始一项新的活动,我在一个活动上贴了一个吐司,看看我是否做了什么,但我什么也没有得到。这是一个普遍的问题吗 第17版 targetSdkVersion 27 布局 <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="0dp"
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
提前感谢您对问题的任何帮助或指导。我刚开始使用菜单项click intent,我真的不明白为什么它不起作用
onOptionsItemSelected
不用于处理BottomNavigationView
上的操作。对BottomNavigationView
中的MenuItem
执行的操作应如下所示:
BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView
.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull final MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.navigation_home) {
Intent navHome = new Intent(MainActivity.this, WordpressActivity.class);
MainActivity.this.startActivity(navHome);
return true;
}
if (id == R.id.navigation_apps) {
Toast.makeText(MainActivity.this, "apps is Clicked", Toast.LENGTH_LONG).show();
return true;
}
if (id == R.id.navigation_profile) {
Intent navProf = new Intent(MainActivity.this, AccountActivity.class);
MainActivity.this.startActivity(navProf);
return true;
}
if (id == R.id.navigation_logout) {
Intent navLog = new Intent(MainActivity.this, LogoutActivity.class);
MainActivity.this.startActivity(navLog);
return true;
}
return false;
});
菜单xml文件的名称是
navigation
吗?是的,navigation.xml在菜单文件夹中。您能在菜单文件夹中放置一个断点,检查是否调用了onoptionItemSelected
?setOnNavigationItemSelectedListener无法解析,返回值在方法之外返回。@ValhallaSkies有一个额外的}
。把它拿走。我已经更新了我的answer@ValhallaSkies萨加尔的解决方案是正确的。我想你可以检查一下:我一定是遗漏了什么。如果将其置于onCreate之外,则setOnNavigationItemSelectedListener无法解析。如果我把它放在onCreate中,startActivity无法解析方法。我很困惑。它一定在onCreate()
中,只需按alt+enter
并确保所有导入都是正确的。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.navigation, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.navigation_home) {
Intent navHome = new Intent(this, WordpressActivity.class);
this.startActivity(navHome);
return true;
}
if (id == R.id.navigation_apps) {
Toast.makeText(this, "apps is Clicked", Toast.LENGTH_LONG).show();
return true;
}
if (id == R.id.navigation_profile) {
Intent navProf = new Intent(this, AccountActivity.class);
this.startActivity(navProf);
return true;
}
if (id == R.id.navigation_logout) {
Intent navLog = new Intent(this, LogoutActivity.class);
this.startActivity(navLog);
return true;
}
return super.onOptionsItemSelected(item);
}
BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView
.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull final MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.navigation_home) {
Intent navHome = new Intent(MainActivity.this, WordpressActivity.class);
MainActivity.this.startActivity(navHome);
return true;
}
if (id == R.id.navigation_apps) {
Toast.makeText(MainActivity.this, "apps is Clicked", Toast.LENGTH_LONG).show();
return true;
}
if (id == R.id.navigation_profile) {
Intent navProf = new Intent(MainActivity.this, AccountActivity.class);
MainActivity.this.startActivity(navProf);
return true;
}
if (id == R.id.navigation_logout) {
Intent navLog = new Intent(MainActivity.this, LogoutActivity.class);
MainActivity.this.startActivity(navLog);
return true;
}
return false;
});