片段

2017-05-23 23 views
-1

我想執行我的片段onCreateView方法中的下一個碼內的NavigationView項工作:在執行時片段

if (displayedPalabra!=null){ 
     setCardAttributes(displayedPalabra); 
     NavigationView navigationView = (NavigationView) layout.findViewById(R.id.nav_view); 
     navigationView.getMenu().getItem(0).setChecked(true); 
    } 

但給我的下一個錯誤:

的java .lang.NullPointerException:嘗試調用虛擬方法 'android.view.Menu android.support.design.widget.NavigationView.getMenu()'null object reference

我的問題是:從片段佈局不能訪問NavigationView從MainActivity,從而檢索空值?我必須以某種方式訪問​​它嗎?代碼應該是不言自明的,即時通訊只是試圖設置這個片段的項目在我的應用程序的NavigationView菜單中檢查...通常我從MainActivity執行默認設置,但此片段是從另一個片段調用的...

+1

您可以在活動中創建一個方法來切換片段並僅使用該方法。使它公開,並從碎片內存訪問它也 – bogdanN

回答

2

您的片段佈局不包含R.id.nav_view,因爲它位於活動佈局中,而不是片段。使用getActivity()從您的活動獲取導航視圖。

+0

謝謝...我剛剛意識到我的錯誤是多麼愚蠢,我的問題是我使用主要活動的代碼...我使用getActivity()並解決,謝謝指出。只要我能,我會將你的答案標記爲已接受。 – Shohn

+0

雖然您可以像這樣訪問導航視圖,但這可能不是正確的方法。你的片段不應該知道導航視圖。使用一些監聽器/通知機制來報告活動或邏輯控制器所選項目已更改。 –