打開一旦我使用此代碼打開一個optionsmenu作爲一個彈出:OptionsMenu僅適用於Android 4.1
@Override
public boolean onPrepareOptionsMenu(Menu menu){
openMenu();
return true;
}
private void openMenu(){
View popUpView = getLayoutInflater().inflate(R.layout.menu, null);
popUpMenu = new PopupWindow(popUpView, LayoutParams.FILL_PARENT
, LayoutParams.WRAP_CONTENT
, true);
popUpMenu.setBackgroundDrawable(new BitmapDrawable());
popUpMenu.setAnimationStyle(android.R.style.Animation_Dialog);
popUpMenu.showAtLocation(popUpView, Gravity.BOTTOM, 0, 0);
makePopUpMenuButtons(popUpView);
}
的問題是,在Android 4.1的菜單隻開一次。 我讀了一些關於invalidateOptionsMenu(),但我不知道在哪裏實現此方法。另外eclipse說「方法invalidateOptionsMenu()沒有在...上定義」。
有沒有人知道該怎麼做,以便菜單按鈕被點擊時每次打開選項菜單?
編輯:
我不使用Android的菜單對象,因爲我想有一個自定義的設計。這就是爲什麼我在onPrepareOptionsMenu中創建popop的原因。所以我不使用onOptionsItemSelected。我的問題是onPrepareOptionMenu只在第一次點擊時被調用,之後只有不規則的。
在Android 3.0及更高版本上,當菜單項出現在操作欄中時,選項菜單被認爲始終打開。當發生事件並且想要執行菜單更新時,必須調用invalidateOptionsMenu()來請求系統調用onPrepareOptionsMenu()。
本段說我必須調用invalidateOptionsMenu當我的API是3.0和更高。但是在我的項目中,所有API都低於4.1。我試圖顯示我的彈出後打電話到invalidateOptionsMenu,但是Eclipse提供了一個錯誤,因爲該方法是不確定的...
我認爲你應該使用invalidateOptionsMenu( )在onOptionsItemSelected()或其他東西,或者至少向我們顯示onOptionsItemSelected()代碼。 – shkschneider
我不使用onOptionsItemSelected()。請閱讀我的編輯 – bluerob