如何從我的片段訪問我的菜單,然後更改其中一個菜單項的圖標?如何從片段中更改菜單項圖標?
我在做什麼是查詢我的本地數據庫,看看是否存在片段時顯示某個條目。如果它確實顯示一個固定的圖標,如果沒有,則顯示一個輪廓圖標。
如何從我的片段訪問我的菜單,然後更改其中一個菜單項的圖標?如何從片段中更改菜單項圖標?
我在做什麼是查詢我的本地數據庫,看看是否存在片段時顯示某個條目。如果它確實顯示一個固定的圖標,如果沒有,則顯示一個輪廓圖標。
在您的片段onCreate()方法中,您可以使用setHasOptionsMenu(true)來允許您的片段處理不同於其根目錄的菜單項。 所以你可以做這樣的事情在你的片段:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
然後,您可以覆蓋任何在你的片段菜單生命週期方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_fragment, menu);
// You can look up you menu item here and store it in a global variable by
// 'mMenuItem = menu.findItem(R.id.my_menu_item);'
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem menuItem = menu.findItem(R.id.menu_item_to_change_icon_for); // You can change the state of the menu item here if you call getActivity().supportInvalidateOptionsMenu(); somewhere in your code
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
// Handle actions based on the id field.
}
像[這裏](HTTP: //stackoverflow.com/questions/27440133/custom-options-menu-for-every-fragment)? – Blackbelt