[英]Android actionbar menu item
我的操作欄中有一個項目菜單(排序列表),我必須將其可見性設置為VISIBLE / GONE(取決於列表大小 - >是否為空)。
所以我需要的是檢查listview是否為空並相應地設置該菜單項的可見性,我設法想出一些代碼(檢查onCreateOptionsMenu中的listview大小並設置菜單項可見性),但是問題是列表可以從相同的活動或從另一個活動更改其內容,讓我沒有選項(IMO),而不是再次檢查列表視圖大小並在onResume()中設置visiblity。
下一個問題是:在onResume()中設置該項的可見性,將拋出一個NPE,因為我還沒有初始化MenuItem(在onResume之后調用onCreateOptionsMenu)。 如何解決這種情況的任何想法將不勝感激。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getSupportMenuInflater().inflate(R.menu.main, menu);
/*
* initialize sortMenuItem so it can be used for turning visibility
* on/off in onResume()
*/
sortMenuItem = menu.findItem(R.id.menu_sort);
return true;
}
@Override
public void onResume() {
super.onResume();
boolean isListEmpty = mInterviewsList.isEmpty();
Log.d(LOG_TAG, "sortMenuItem is null? " + (sortMenuItem == null));
// sortMenuItem is indeed null
sortMenuItem.setVisible(isListEmpty);
sortMenuItem.setEnabled(!isListEmpty);
this.invalidateOptionsMenu();
}
您可以在onCreateOptionsMenu中動態添加sortMenuItem,具體取決於您的列表視圖大小,如果您使用(google ActionBar compat lib)或類似方法,則可以在onResume中調用supportInvalidateOptionsMenu() 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.