2016-03-19 12 views
0

私はonNavigationItemSelectedNavigationViewに表示しています。IF条件は私に警告を与える:常にtrue

私は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

編集:

I以下のいるメニュー項目:なぜそれはそう

enter image description here のですか?どうすればそれを簡略化できますか?

+1

yoがどのように多くのナビゲーションのアイテムを持っているのですか? –

+0

私の質問が更新されましたので、私はメニューに7項目あります –

答えて

0

それは常に真であるため。 3つの可能性があります:mNavMenuItemIdはnav_rate、そのnav_share、またはそのどちらです。 nav_rateの場合、2番目のチェックは真となります。そのnav_shareの場合、最初のものが真です。どちらも真でない場合、両方とも真です。それが間違っている方法はありません。

私はあなたが& &の代わりを意味だと思い||

+0

**どちらもない場合、どちらも真です**どのように? –

+0

うわー、簡単な数学?レートが5でシェアが7の場合、アイテムが11であるとしましょう。その場合、アイテムは5ではないので、最初のアイテムは真で7ではなく、2番目のアイテムは真です –

0

単純なロジック:If条件が「IDがこのIDでないか、またはそれではない場合は、大括弧で囲んでください」という条件がありますが、これは常に条件に当てはまります、それは(!=)他のように同じことカント、それはそれらの両方が好きイマイチ場合は、条件があまりにも真です。ですからエクステンダ "||" - > ORを "& &" - > ANDに変更しなければなりません。あなたが理解して、私が説明したいことを願っています。その問題に他の質問がある場合は、ただ質問してください。ドイツ

1

から

ご挨拶はおそらくあなたは& &代わりに||を意味しました。

mNavMenuItemId!= R.id.nav_rateがfalseの場合、mNavMenuItemId == R.id.nav_rateです。あなたの状態の第2部分が計算されるのは唯一のケースです。もちろん、それはそうであるならば、mNavMenuItemId!= R.id.nav_share。