2017-05-18 42 views
0

在我的菜單XML我有這樣的:檢查從彈出菜單菜單項返回空指針

<item 
    android:id="@+id/action_payoff" 
    android:visible="true" 
    android:checkable="true"/> 

在我adaptergetView()方法,其中每個菜單項具有相同的PopUpMenu,我這樣做:

holder.ib.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      PopupMenu popup = new PopupMenu(getContext(), v); 
      popup.getMenu().findItem(R.id.action_payoff).setChecked(true); 

我收到一個NullPointerException。當我刪除setChecked(true);所有工作正常(當然我的PopUpMenu項目中的複選框沒有選中)

有沒有人有這個想法?

旁註:當然有一些邏輯尚未構建。我只是試圖通過編程方式訪問菜單項,然後將其有條件地與SharedPreference連接。

+0

但是,爲什麼你期望它不會返回'null'?很顯然,在PopupMenu的'Menu'中沒有這樣一個'MenuItem',你沒有執行任何操作來將這個項目包含在'PopupMenu'中。 – azizbekian

+0

@azizbekian我不認爲這很明顯。當這部分行被刪除(但不是xml)時,會出現一個帶有複選框的菜單項,並帶有該標識 – KickingLettuce

+0

@azizbekian無論如何,它現在已經修復,我將該行移動到彈出show() – KickingLettuce

回答

0

我固定它通過移動的代碼行show()方法後,像這樣:

popup.show();     
popup.getMenu().findItem(R.id.action_include_payoff).setChecked(true);