14. Control visibility of debug menu
public class MenuModule {
private final static int GROUP_ID = Integer.MAX_VALUE;
public void onCreateOptionsMenu(Menu menu){
if(!LocalStorageUtil.getBoolean(S.is_debug_menu_visible)) return;
// Set group id so that we can control visibility!
menu.add(GROUP_ID, 100, 0, "Input");
//... Add menus
}
public void setVisibility(Menu menu, boolean isVisible){
for(int i = 0, length = menu.size(); i < length; i++ ){
MenuItem menuItem = menu.getItem(i);
if(menuItem.getGroupId() == GROUP_ID){
menuItem.setVisible(isVisible); //Set visibility
}
}
}
}
15. public class BaseActivity {
mMenuModule = new MenuModule(this);
// Called only once
@Override
public boolean onCreateOptionsMenu(Menu menu) {
mMenuModule.onCreateOptionsMenu(menu);
return super.onCreateOptionsMenu(menu);
}
// Called every time menu is shown
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
mMenuModule.setVisibility(menu,
LocalStorageUtil.getBoolean(S.is_debug_menu_visible, false));
return super.onPrepareOptionsMenu(menu);
}
}
Control visibility of debug menu
16. public class DebugView {
private void changeDebugMenu(boolean isDebugMenuVisible){
// Save the state in Shared preference
LocalStorageUtil.putBoolean(S.is_debug_menu_visible,
isDebugMenuVisible);
debugMenuButton
.setText(isDebugMenuVisible ? R.string.on : R.string.off);
debugMenuButton
.setBackgroundResource(isDebugMenuVisible ?
R.drawable.indicator_on :R.drawable.indicator_off);
// Update menu
MyApplication
.getContext().getCurrentActivity().invalidateOptionsMenu();
}
}
Control visibility of debug menu
17. Wrap up
• Modularise debug components and get rid
of them out from production
• Control the visibility of debug menu to avoid
effects on usability