java - Java - 点击菜单项打开片段
问题描述
我正在 android studio 上使用 id 在组中添加菜单。我遇到了菜单点击事件的问题,因为当我点击它时它不会做任何事情。
这是我尝试过的:
public boolean onOptionsItemSelected(MenuItem item) { Fragment newFragment = null; // 这是要放入 FrameLayout 的片段 int id = item.getItemId();
if (id == R.id.nav_group1) {
newFragment = new FolderFragment();
}
// Let's put the new fragment into the FrameLayout
// If you use the support action bar, use getSupportFragmentManager(), else getFragmentManager()
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.nav_host_fragment, newFragment); // R.id.fragment_container = FrameLayout ID
transaction.commit();
return true;
}
这是我用来添加菜单的内容:
NavigationView navigationView = findViewById(R.id.nav_view);
Menu menu = navigationView.getMenu();
try {
JSONArray jsonArray = new JSONArray(folders);
int id = 1;
int order = 100;
for (int i = 0; i < jsonArray.length(); i++) {
String folder = jsonArray.getString(i);
menu.add(R.id.nav_group1, id, order, folder)
.setIcon(R.drawable.ic_baseline_folder_24);
id++;
order++;
}
} catch (JSONException e) {
e.printStackTrace();
}
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_inbox, R.id.nav_important, R.id.nav_sent, R.id.nav_drafts, R.id.nav_spam, R.id.nav_trash, R.id.nav_group1, R.id.nav_create_new_folder, R.id.nav_contact)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
我想要实现的是当我点击菜单时,我想打开nav_group
.
你能告诉我一个例子,当我使用java添加菜单时,我如何点击菜单打开片段?
解决方案
推荐阅读
- python - 如何在 cozmo 机器人和 hololens 之间合并 websocket 连接?
- qt - Qt如何知道动态创建时选择了复选框?
- git - Git撤消推送的提交(错误地删除了文件夹),上面有其他提交
- c# - 错误 CS0649,程序不会在定义的 UI 中显示变量
- c# - 使用不在数据库中的实体对象进行 LINQ 查询 - 错误:LINQ to Entities 无法识别该方法
- python - Seaborn 图表收敛于同一点不可见
- python - 熊猫:最后一次列具有非 nan 值
- javascript - 在 javascript 中覆盖匿名 const 函数
- c# - 读取相机设备名称并将其作为变量存储在 c# 中
- html - 使用 flexbox 将 div 与另一个左对齐的同级 div 水平居中