如何解决android studio中的infragment问题

问题描述 投票:0回答:1

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

我正在尝试用这个视频来做到这一点

android android-studio android-fragments
1个回答
0
投票

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;
    }
}

顺便说一句,视频确实将其作为冒号。

© www.soinside.com 2019 - 2024. All rights reserved.