要解决Android中navigation onNavigationItemSelected方法没有被调用的问题,可以按照以下步骤进行操作:
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout = findViewById(R.id.drawer_layout);
navigationView = findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// 处理菜单项的点击事件
switch (item.getItemId()) {
case R.id.menu_item1:
// 处理菜单项1的点击事件
return true;
case R.id.menu_item2:
// 处理菜单项2的点击事件
return true;
// 添加其他菜单项的处理逻辑
}
return false;
}
});
}
// 其他代码...
}
确保你的菜单资源文件中的菜单项具有唯一的id。如果多个菜单项具有相同的id,可能会导致onNavigationItemSelected方法没有被调用。
如果你在Fragment中使用NavigationView,确保你正确设置了setNavigationItemSelectedListener方法,且该方法在Fragment的onCreateView方法中调用。以下是一个示例:
public class MyFragment extends Fragment {
private NavigationView navigationView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
navigationView = view.findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
// 处理菜单项的点击事件
switch (item.getItemId()) {
case R.id.menu_item1:
// 处理菜单项1的点击事件
return true;
case R.id.menu_item2:
// 处理菜单项2的点击事件
return true;
// 添加其他菜单项的处理逻辑
}
return false;
}
});
return view;
}
// 其他代码...
}
通过以上步骤,你应该能够解决Android中navigation onNavigationItemSelected方法没有被调用的问题。
上一篇:Android 的 Kotlin 问题解析器 Gson 结合 Retrofit2 预期的是一个对象(BEGIN_OBJECT),但在第1行第2列的位置,实际却是一个数组(BEGIN_ARRAY)。
下一篇:Android 的 SharedPreferences 和 Encrypted SharedPreferences