2013-08-28 135 views
0

我想在較低Android版本中獲得MenuItem。此代碼在Android 4.0.3中正常工作:在較低Android版本中獲取MenuItem

_menu.findItem(R.id.menu_item).setVisible(true); 

但是該應用程序在Android 2.3.6中崩潰。它拋出一個NullPointerException。

如何在較低的Android版本中使用它?

回答

0

我的代碼是工作的8的minSdkVersion,並沒有任何問題

對於片段:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 

super.onCreateOptionsMenu(menu, inflater); 

     inflater.inflate(R.menu.menu_result_search, menu); 

     MenuItem saveItem = menu.findItem(R.id.save_item);  
     saveItem.setVisible(false); 

} 

對於活動:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu_detail, menu); 

     MenuItem upIconActionBar = menu.findItem(R.id.menu_up); 
     upIconActionBar.setVisible(false); 
    } 
+0

我保存菜單中的對象作爲變量。它應該在onCreateOptionsMenu之外。 – JavaForAndroid

+0

我在2.3.3 android手機上的onCreateOptionsMenu外部測試,它工作正常,沒有崩潰 MenuItem save = mMenu.findItem(R.id.save_item); \t save.setVisible(false); – nirvik

+0

從Android開發人員文檔: 如果您已開發Android 2.3.x或更低版本的應用程序,系統會在用戶第一次打開菜單時調用onCreateOptionsMenu()創建選項菜單。如果您開發的是Android 3.0及更高版本,則系統會在開始活動時調用onCreateOptionsMenu(),以便將項目顯示到操作欄。 在第一次打開它之前,確保你沒有試圖訪問2.3.3上的菜單! – nirvik

相關問題