2016-03-19 5 views
0

Я использовал onNavigationItemSelected для отображения выбранного элемента в NavigationView.Условие IF дает мне предупреждение: всегда верно

Я не хочу, чтобы выбрать все детали и сохранить выбранные ранее элементы, выбранные Если пользователь выбрал ДОЛЯ или RATE из NavigationView, я написал следующее условие для этого типа:

@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 Почему это так? Как я могу упростить это?

+1

сколько предметов навигации у вас есть? –

+0

Как обновил мой вопрос, у меня есть 7 пунктов в меню –

ответ

0

Потому что это всегда так. Существует 3 возможности: mNavMenuItemId - nav_rate, его nav_share, или его ни один. Если его nav_rate, вторая проверка становится истинной. Если его nav_share, первое верно. Если это не так, то оба истины. Нет никакого способа, чтобы это было ложным.

Я думаю, вы имели в виду & & вместо ||

+0

** Если его нет, то оба истины. ** Как? –

+0

Ум простой математике? Если ставка равна 5, а доля равна 7, допустим, что элемент равен 11. В этом случае элемент не равен 5, поэтому первое значение истинно, а не 7, так что второе верно –

0

Его просто логика: ваше условие If говорит: «Если идентификатор не является этим или нет, делайте код в скобках». Но это условие всегда будет истинным, потому что если идентификатор тот же, что и в условии , он не может быть таким же, как и другой (! =), и если он не похож на оба из них, это условие также верно. Поэтому вам нужно изменить расширитель «||» -> ИЛИ на «& &» -> И. Надеюсь, вы поняли, что я хотел объяснить. Если у вас есть другие вопросы к этой проблеме, просто спросите.

Привет из Германии

1

Возможно, вы имели в виду & & вместо ||.

Если mNavMenuItemId! = R.id.nav_rate является ложным, тогда mNavMenuItemId == R.id.nav_rate. Это единственный случай, когда вычисляется вторая часть вашего состояния. Очевидно, если это так, то mNavMenuItemId! = R.id.nav_share.

Смежные вопросы