2016-12-25 96 views
2

我將設置可見的導航項目(true或false)作爲一些條件。導航項目setVisible

item = (MenuItem)getActivity().findViewById(R.id.find_doctor_nav);mInsertBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) {if(type.equals("Doctor")){ 
        item.setVisible(false); 
       } 
       if(type.equals("Patient")){ 
        item.setVisible(true); 
       } 
       CharSequence text = "User session start..!"; 
       Toast toast = Toast.makeText(getContext(), text, Toast.LENGTH_LONG); 
       toast.setGravity(Gravity.CENTER,0,0); 
       toast.show(); 
      } 
     } 
    }); 

這是我的一段代碼,這是我要做的。但是,這是給我的錯誤

android.view.MenuItem android.view.MenuItem.setVisible(布爾)」對空對象引用

我在片段級做什麼,但它無法正常工作用我的代碼。請建議我一些適當的解決方案。謝謝....

回答

3

你應該找到NavigationView

//Inside Activity 

public void setItemVisible(boolean visible){ 
    NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view); 
    toggleVisibility(navigationView.getMenu(), R.id.find_doctor_nav, visible); 
} 

private void toggleVisibility(Menu menu, @IdRes int id, boolean visible){ 
    menu.findItem(id).setVisible(visible); 
} 

您可以找到菜單

編輯項:

使用Interface,讓您的活動實現它。然後在你的Fragment,叫((NavigationMenuListener)getActivity).setItemVisible(true /*or false*/);

public interface NavigationMenuListener { 
    void setItemVisible(boolean visible); 
} 

如需更多信息,只是谷歌的片段。還有更多的答案。

+0

但是您使用Desig Library的NavigationView? –

+1

貓王,這是不行的,因爲我在「片段」中設置它。我的代碼工作兩天前,但這一次是行不通的。我想知道這是一個正確的方法來做到這一點,因爲我更新在android – Mujahid

+0

是的這個android navigationview。我在主要活動中編寫導航代碼,但我在片段 – Mujahid