IF条件给我警告:始终为真

时间:2016-03-19 07:45:50

标签: android if-statement warnings

我使用 onNavigationItemSelected NavigationView中显示所选项目。

我不想选择任何项目并将之前选择的项目保留为选中如果用户从NavigationView中选择SHARE或RATE ,我写了以下条件:

@Override
public boolean onNavigationItemSelected(MenuItem item) {
    // update highlighted item in the navigation menu
    mNavMenuItemId = item.getItemId();

    if(mNavMenuItemId != R.id.nav_rate || mNavMenuItemId != R.id.nav_share)
        item.setChecked(true);
}

但它给了我警告:

enter image description here

编辑:

我有以下菜单项:

enter image description here 为什么会这样?我该如何简化那个?

3 个答案:

答案 0 :(得分:1)

可能你的意思是&&而不是||。

如果mNavMenuItemId!= R.id.nav_rate为false,则mNavMenuItemId == R.id.nav_rate。这是你的病情的第二部分计算的唯一情况。显然,如果是这样,那么mNavMenuItemId!= R.id.nav_share。

答案 1 :(得分:0)

因为它总是如此。有三种可能性:mNavMenuItemId是nav_rate,它的nav_share,或者它们都不是。如果是nav_rate,则第二次检查变为真。如果是nav_share,则第一个为真。如果不是,那么两者都是真的。没有办法让它变得虚假。

我认为你的意思是&&而不是||

答案 2 :(得分:0)

它的简单逻辑:你的If条件说“如果ID不是这个或不是那个,请在括号中执行代码”但这是一个始终为真的条件,因为如果ID与条件中的ID相同,它不能像另一个一样(!=),如果它不像它们两个,条件也是如此。所以你必须改变扩展器“||” - >或者“&&” - >和。我希望你明白,我想解释一下。如果您对该问题有任何其他问题,请询问。

来自德国的问候