2016-12-12 43 views
0

我認爲這是一個簡單的問題,但它讓我撓頭。導航抽屜活動狀態不起作用

我一直在努力讓它工作,但我總是失敗。請忍受我的問題。

活動狀態不適用於內部項目>菜單中的項目。

如果我按下該項目。視圖工作完美。但是,如果我按漢堡菜單。該項目未處於活動狀態,最後一個處於活動狀態的項目仍處於活動狀態。

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_home" 
     android:icon="@drawable/menu_home" 
     android:title="Home" /> 
    <item 
     android:id="@+id/nav_game" 
     android:icon="@drawable/menu_account" 
     android:title="Game" /> 
    <item 
     android:id="@+id/nav_livechat" 
     android:icon="@drawable/menu_account" 
     android:title="Live Chat"/> 
</group> 

<item android:title="Transaction"> 
    <menu> 
     <item 
      android:id="@+id/nav_deposit" 
      android:icon="@drawable/menu_depwit" 
      android:title="Deposit" /> 

     <item 
      android:id="@+id/nav_withdraw" 
      android:icon="@drawable/menu_depwit" 
      android:title="Withdraw" /> 

     <item 
      android:id="@+id/nav_transfer" 
      android:icon="@drawable/menu_transfer" 
      android:title="Transfer" /> 
    </menu> 
</item> 

public boolean onNavigationItemSelected(MenuItem item) { 
    if (id == R.id.nav_home) { 
     HomeFragment homeFragment = new HomeFragment(); 
     FragmentManager manager = getSupportFragmentManager(); 
     manager.beginTransaction().replace(R.id.content_fragment, homeFragment, homeFragment.getTag()).commit(); 
    } else if() { 
     // and so on... 
    } 
} 

任何幫助,將不勝感激。

+0

嘗試添加addbackstack(null);在您的分段事務中,並在主機活動覆蓋navigationclickLiatener –

+0

只需設置item.setChecked(true);在每一個if中,如果..條件.AND android:checked =「true」,在默認情況下將其設置在menu.xml中條目 – Radhey

回答

0

你可以做這樣的事情

 MenuItem previousMenuItem; 
     public boolean onNavigationItemSelected(MenuItem item) { 
     if (previousMenuItem != null) { 
       previousMenuItem.setChecked(false); 
      } 
      item.setChecked(true); 
      previousMenuItem = item; 
     if (id == R.id.nav_home) { 
      HomeFragment homeFragment = new HomeFragment(); 
      FragmentManager manager = getSupportFragmentManager(); 
      manager.beginTransaction().replace(R.id.content_fragment, homeFragment, homeFragment.getTag()).commit(); 
     } else if() { 
      // and so on... 
     } 
    } 

不是一個完美的解決方案,但爲我工作..

+0

謝謝你的努力,但是這並不適用於項目的完整活動狀態。沒有背景並且previousMenuItem不起作用。 –

+0

@LaraBelle你的意思是完全活躍的狀態? 。之前的MenuItem應該是一個全球變量。 –

+0

對不起,我選了一個錯誤的單詞。我剛剛說過,因爲它沒有背景。開發android應用程序非常困難。 :/ –

0

這裏是一個片段試試吧,希望它會幫助你

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 

    if (!item.isChecked()) { 
     item.setChecked(true); 
    } 
    Bundle mBundle = new Bundle(); 
    switch (item.getItemId()) { 
     case R.id.nav_home: 
     // Your action goes here.... 
     break; 
    } 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
+0

mBundle有什麼用? –

+0

@LaraBelle你試過我的編輯答案。 ? –

+0

如果你想傳遞一些數據到另一個片段,你可以在bundle中設置這些數據,然後把這個bundle作爲參數傳遞,但是你實際上並不需要它,所以忽略那條線...... – Bhavnik