java - 底部导航菜单 onClick 图标选择
问题描述
我认为有两个问题是相关的。背景:我有三个底部导航项,它们导致其他布局和活动;其中之一是家庭。
在 Home 中,执行 onClick 时,将打开选定的活动和布局,但选定的图标仅在单击时突出显示,然后突出显示 Home。如果再次按下,则会突出显示选定的布局图标。如何在第一次单击时突出显示图标?
主页还有三个其他按钮,可引导其他活动。选择房屋时,返回家园需要大量时间。为什么呢?其他活动/布局暂时是空的。我需要在后台运行服务吗?主页 Java/Activity 代码不长,但需要很长时间才能返回。
真的很感激一些想法。也许答案是零碎的,但不确定这是否能解决第一个问题?我已经包含了我的代码,用于从主页进行底部导航。问候, 爱德华
PS 我一个月前才开始使用 Java 和 Android Studio。
//Declare navigation view ID (bottomnav_view) in content_main
BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomnav_view);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.ic_home: break;
case R.id.ic_instruments:
Intent intentinstruments = new Intent(MainActivity.this, InstrumentListActivity.class);
startActivity(intentinstruments);
break;
case R.id.ic_methods:
Intent intentmethods = new Intent(MainActivity.this, MethodsActivity.class);
startActivity(intentmethods);
break;
}
return true;
}
});
//End of bottom hav handler
解决方案
在实现 BottomNavigationView 时,总是首选片段。
试试这个方法。
bottomNavigationView.setOnNavigationItemSelectedListener(new
BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()){
case R.id.navigation_News:
selectedFragment = ItemoneFragment.newInstance();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content,selectedFragment);
transaction.addToBackStack(null);
transaction.commit();
return true;
case R.id.navigation_profile:
selectedFragment = ItemtwoFragment.newInstance();
transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content,selectedFragment);
transaction.addToBackStack(null);
transaction.commit();
return true;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, selectedFragment);
transaction.commit();
return true;
}
});
推荐阅读
- .net - xml 转换定位器匹配未按预期工作
- spring - Spring mvc 将相同的 url 重定向到不同的主机
- java - getter 在设置后无法访问它的值
- node.js - 从节点服务器在角度应用程序上显示图像
- java - JPA 匹配多对多关系中的元素子集
- docusignapi - DocuSign eSign REST API 如何在 PHP 中处理 PDF 响应?
- javascript - React Leaflet LayersControll - baseLayer 对象示例
- chef-infra - 如何将厨师服务器 12 更新为厨师 14
- sql - 从嵌入式 SQL 查询中触发 COBOL 标志
- javascript - 左固定列与表 colspan