开关盒在菜单项上不起作用-为什么?

时间:2019-05-24 20:07:25

标签: java android

当我在菜单中单击项目时,我试图执行操作,并且我使用了开关盒来遍历项目ID

我试图删除中断并尝试播放代码不起作用,并且每次我单击菜单中的任何项目时,它都会执行菜单中的最后一种方法,即注销

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.menu_all_users:
            // complete later

        case R.id.menu_account_setting:
            Intent settingIntent = new Intent(MainActivity.this, SettingActivity.class);
            startActivity(settingIntent);
            finish();

        case R.id.menu_log_out:
            auth.signOut();

            Intent loginIntent = new Intent(MainActivity.this , LoginActivity.class);
            loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(loginIntent);
            finish();

            default:
                break;
    }

    return super.onOptionsItemSelected(item);


}

4 个答案:

答案 0 :(得分:1)

为什么您删除了break语句,请尝试这种方式:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle item selection
    switch (item.getItemId()) {
    case R.id.menu_all_users:

        return true;
    case R.id.menu_account_setting:
        Intent settingIntent = new Intent(MainActivity.this, SettingActivity.class);
        startActivity(settingIntent);
        finish();
        return true;
    case R.id.menu_log_out:
        auth.signOut();

        Intent loginIntent = new Intent(MainActivity.this , LoginActivity.class);
        loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(loginIntent);
        finish();
        return true;

    default:
        return super.onOptionsItemSelected(item);
    }
}

还交叉检查所有ID是否都存在于xml中,并且您正在使用onCreateOptionsMenu方法适当地夸大菜单。

答案 1 :(得分:0)

我相信您会在所有情况下都丢失break语句(默认情况除外)。

答案 2 :(得分:-1)

这段代码看起来不错。也许您错过了菜单目录中的某些内容。因此,您可以检查this以使其完美实现。 希望对您有帮助。

答案 3 :(得分:-1)

谢谢大家,我使用if语句代替了switch并解决了问题

@Override
public boolean onOptionsItemSelected(MenuItem item) {


    if(item.getItemId() == R.id.menu_all_users){

        sendToAllUsers();

    }else if(item.getItemId() == R.id.menu_account_setting){

        GoToSetting();

    }else if(item.getItemId() == R.id.menu_log_out){

        Logout();

    }

    return super.onOptionsItemSelected(item);