bottomNavigationView = findViewById(R.id.bottom_navigation); getSupportFragmentManager().beginTransaction().replace(R.id.container, homeFragment).commit(); BottomNavigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() { @覆盖 公共布尔 onNavigationItemSelected(MenuItem 项) { 开关 (item.getItemId()) { 案例 R.id.home; getSupportFragmentManager().beginTransaction().replace(R.id.container, homeFragment).commit(); 返回真; 案例 R.id. 设置; getSupportFragmentManager().beginTransaction().replace(R.id.container, settingsFragment).commit(); 返回真; } 返回假; } });
这段代码“case R.id.home”和“case R.id.settings”我在这段代码中的某个地方遇到了错误。它给出了这个错误:':'或'->'预期
https://www.youtube.com/watch?v=OV25x3a55pk
我正在尝试用这个视频来做到这一点
将
case R.id.home;
更改为 case R.id.home:
(分号改为冒号)。 R.id. 设置相同。如:
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.home:
getSupportFragmentManager().beginTransaction().replace(R.id.container, homeFragment).commit();
return true;
case R.id.settings:
getSupportFragmentManager().beginTransaction().replace(R.id.container, settingsFragment).commit();
return true;
}
return false;
}
请注意,您可能还会在“进一步探讨的 switch case 语句”中收到有关“非最终资源 id”的警告此处有更多信息。
消除预期警告的一种解决方案如下:
public boolean onNavigationItemSelected(MenuItem item) {
if (item.getItemId() == R.id.home) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, homeFragment).commit();
return true;
} else if (item.getItemId() == R.id.settings) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, settingsFragment).commit();
return true;
} else {
return false;
}
}
顺便说一句,视频确实将其作为冒号。